initial commit CoMReL
diff --git a/org.eclipse.emf.refactor.comrel.diagram/.classpath b/org.eclipse.emf.refactor.comrel.diagram/.classpath
new file mode 100644
index 0000000..ed2bc12
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.emf.refactor.comrel.diagram/.options b/org.eclipse.emf.refactor.comrel.diagram/.options
new file mode 100644
index 0000000..1876dbf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/.options
@@ -0,0 +1,7 @@
+# Tracing options for the comrel.diagram plug-in
+
+# Common issues
+comrel.diagram/debug=false
+
+# Visual IDs
+comrel.diagram/debug/visualID=false
diff --git a/org.eclipse.emf.refactor.comrel.diagram/.project b/org.eclipse.emf.refactor.comrel.diagram/.project
new file mode 100644
index 0000000..8d53851
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.emf.refactor.comrel.diagram</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.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+	</natures>

+</projectDescription>

diff --git a/org.eclipse.emf.refactor.comrel.diagram/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.comrel.diagram/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..738d725
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/META-INF/MANIFEST.MF
@@ -0,0 +1,44 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: CoMReL Diagram

+Bundle-SymbolicName: org.eclipse.emf.refactor.comrel.diagram;singleton:=true

+Bundle-Version: 0.9.0

+Bundle-ClassPath: .

+Bundle-Activator: comrel.diagram.part.ComrelDiagramEditorPlugin

+Bundle-Localization: plugin

+Export-Package: comrel.diagram.edit.parts,

+ comrel.diagram.part,

+ comrel.diagram.providers

+Require-Bundle: org.eclipse.core.runtime,

+ org.eclipse.core.resources,

+ org.eclipse.core.expressions,

+ org.eclipse.jface,

+ org.eclipse.ui.ide,

+ org.eclipse.ui.views,

+ org.eclipse.ui.navigator,

+ org.eclipse.ui.navigator.resources,

+ org.eclipse.emf.ecore,

+ org.eclipse.emf.ecore.xmi,

+ org.eclipse.emf.edit.ui,

+ org.eclipse.gmf.runtime.emf.core,

+ org.eclipse.gmf.runtime.emf.commands.core,

+ org.eclipse.gmf.runtime.emf.ui.properties,

+ org.eclipse.gmf.runtime.diagram.ui,

+ org.eclipse.gmf.runtime.diagram.ui.printing,

+ org.eclipse.gmf.runtime.diagram.ui.printing.render,

+ org.eclipse.gmf.runtime.diagram.ui.properties,

+ org.eclipse.gmf.runtime.diagram.ui.providers,

+ org.eclipse.gmf.runtime.diagram.ui.providers.ide,

+ org.eclipse.gmf.runtime.diagram.ui.render,

+ org.eclipse.gmf.runtime.diagram.ui.resources.editor,

+ org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide,

+ org.eclipse.draw2d;visibility:=reexport,

+ org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport,

+ org.eclipse.emf.refactor.comrel;visibility:=reexport,

+ org.eclipse.emf.refactor.comrel.edit;visibility:=reexport,

+ org.eclipse.emf.validation;visibility:=reexport,

+ org.eclipse.gef;visibility:=reexport,

+ org.eclipse.emf.validation.ocl;bundle-version="1.4.0",

+ org.eclipse.ocl.ecore;bundle-version="3.0.2"

+Bundle-ActivationPolicy: lazy

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

diff --git a/org.eclipse.emf.refactor.comrel.diagram/bin/.gitignore b/org.eclipse.emf.refactor.comrel.diagram/bin/.gitignore
new file mode 100644
index 0000000..508dbce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/bin/.gitignore
@@ -0,0 +1 @@
+/comrel
diff --git a/org.eclipse.emf.refactor.comrel.diagram/build.properties b/org.eclipse.emf.refactor.comrel.diagram/build.properties
new file mode 100644
index 0000000..311ca94
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/build.properties
@@ -0,0 +1,12 @@
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               messages.properties,\
+               .options,\
+               src/,\
+               bin/
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/incomingLinksNavigatorGroup.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/incomingLinksNavigatorGroup.gif
new file mode 100644
index 0000000..fca9c53
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/incomingLinksNavigatorGroup.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/linkSourceNavigatorGroup.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/linkSourceNavigatorGroup.gif
new file mode 100644
index 0000000..fca9c53
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/linkSourceNavigatorGroup.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/linkTargetNavigatorGroup.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/linkTargetNavigatorGroup.gif
new file mode 100644
index 0000000..fca9c53
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/linkTargetNavigatorGroup.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/linksNavigatorGroup.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/linksNavigatorGroup.gif
new file mode 100644
index 0000000..fca9c53
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/linksNavigatorGroup.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/obj16/ComrelDiagramFile.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/obj16/ComrelDiagramFile.gif
new file mode 100644
index 0000000..a79ad18
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/obj16/ComrelDiagramFile.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/outgoingLinksNavigatorGroup.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/outgoingLinksNavigatorGroup.gif
new file mode 100644
index 0000000..fca9c53
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/outgoingLinksNavigatorGroup.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/shortcut.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/shortcut.gif
new file mode 100644
index 0000000..c8ebb31
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/shortcut.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/icons/wizban/NewComrelWizard.gif b/org.eclipse.emf.refactor.comrel.diagram/icons/wizban/NewComrelWizard.gif
new file mode 100644
index 0000000..cbb22aa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/icons/wizban/NewComrelWizard.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.diagram/messages.properties b/org.eclipse.emf.refactor.comrel.diagram/messages.properties
new file mode 100644
index 0000000..c727f50
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/messages.properties
@@ -0,0 +1,259 @@
+
+# TODO: manually put keys and values
+ComrelCreationWizardTitle=New Comrel Diagram
+ComrelCreationWizard_DiagramModelFilePageTitle=Create Comrel Diagram
+ComrelCreationWizard_DiagramModelFilePageDescription=Select file that will contain diagram model.
+ComrelCreationWizard_DomainModelFilePageTitle=Create Comrel Domain Model
+ComrelCreationWizard_DomainModelFilePageDescription=Select file that will contain domain model.
+ComrelCreationWizardOpenEditorError=Error opening diagram editor
+ComrelCreationWizardCreationError=Creation Problems
+ComrelCreationWizardPageExtensionError=File name should have {0} extension.
+ComrelDiagramEditorUtil_OpenModelResourceErrorDialogTitle=Error
+ComrelDiagramEditorUtil_OpenModelResourceErrorDialogMessage=Failed to load model file {0}
+ComrelDiagramEditorUtil_CreateDiagramProgressTask=Creating diagram and model files
+ComrelDiagramEditorUtil_CreateDiagramCommandLabel=Creating diagram and model
+ComrelDocumentProvider_isModifiable=Updating cache failed
+ComrelDocumentProvider_handleElementContentChanged=Failed to refresh hierarchy for changed resource
+ComrelDocumentProvider_IncorrectInputError={1}
+ComrelDocumentProvider_NoDiagramInResourceError=Diagram is not present in resource
+ComrelDocumentProvider_DiagramLoadingError=Error loading diagram
+ComrelDocumentProvider_UnsynchronizedFileSaveError=The file has been changed on the file system
+ComrelDocumentProvider_SaveDiagramTask=Saving diagram
+ComrelDocumentProvider_SaveNextResourceTask=Saving {0}
+ComrelDocumentProvider_SaveAsOperation=Saving {0} diagram as
+InitDiagramFile_ResourceErrorDialogTitle=Error
+InitDiagramFile_ResourceErrorDialogMessage=Model file loading failed
+InitDiagramFile_WizardTitle=Initialize new {0} diagram file
+InitDiagramFile_OpenModelFileDialogTitle=Select domain model
+ComrelNewDiagramFileWizard_CreationPageName=Initialize new diagram file
+ComrelNewDiagramFileWizard_CreationPageTitle=Diagram file
+ComrelNewDiagramFileWizard_CreationPageDescription=Create new diagram based on {0} model content
+ComrelNewDiagramFileWizard_RootSelectionPageName=Select diagram root element
+ComrelNewDiagramFileWizard_RootSelectionPageTitle=Diagram root element
+ComrelNewDiagramFileWizard_RootSelectionPageDescription=Select semantic model element to be depicted on diagram
+ComrelNewDiagramFileWizard_RootSelectionPageSelectionTitle=Select diagram root element:
+ComrelNewDiagramFileWizard_RootSelectionPageNoSelectionMessage=Diagram root element is not selected
+ComrelNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage=Invalid diagram root element is selected
+ComrelNewDiagramFileWizard_InitDiagramCommand=Initializing diagram contents
+ComrelNewDiagramFileWizard_IncorrectRootError=Incorrect model object stored as a root resource object
+ComrelDiagramEditor_SavingDeletedFile=The original file "{0}" has been deleted.
+ComrelDiagramEditor_SaveAsErrorTitle=Problem During Save As...
+ComrelDiagramEditor_SaveAsErrorMessage=Save could not be completed. Target file is already open in another editor.
+ComrelDiagramEditor_SaveErrorTitle=Save Problems
+ComrelDiagramEditor_SaveErrorMessage=Could not save file.
+ComrelElementChooserDialog_SelectModelElementTitle=Select model element
+ModelElementSelectionPageMessage=Select model element:
+ValidateActionMessage=Validate
+Objects1Group_title=Objects
+Connections2Group_title=Connections
+AtomicUnit1CreationTool_title=AtomicUnit
+AtomicUnit1CreationTool_desc=Create new AtomicUnit
+CartesianQueuedUnit2CreationTool_title=CartesianQueuedUnit
+CartesianQueuedUnit2CreationTool_desc=Create new CartesianQueuedUnit
+ConditionCheck3CreationTool_title=ConditionCheck
+ConditionCheck3CreationTool_desc=Create new ConditionCheck
+ConditionalUnit4CreationTool_title=ConditionalUnit
+ConditionalUnit4CreationTool_desc=Create new ConditionalUnit
+MultiFeatureUnit5CreationTool_title=MultiFeatureUnit
+MultiFeatureUnit5CreationTool_desc=Create new MultiFeatureUnit
+MultiFilterUnit6CreationTool_title=MultiFilterUnit
+MultiFilterUnit6CreationTool_desc=Create new MultiFilterUnit
+MultiInputPort7CreationTool_title=MultiInputPort
+MultiInputPort7CreationTool_desc=Create new MultiInputPort
+MultiOutputPort8CreationTool_title=MultiOutputPort
+MultiOutputPort8CreationTool_desc=Create new MultiOutputPort
+ParallelQueuedUnit9CreationTool_title=ParallelQueuedUnit
+ParallelQueuedUnit9CreationTool_desc=Create new ParallelQueuedUnit
+SequentialUnit10CreationTool_title=SequentialUnit
+SequentialUnit10CreationTool_desc=Create new SequentialUnit
+SingleFeatureUnit11CreationTool_title=SingleFeatureUnit
+SingleFeatureUnit11CreationTool_desc=Create new SingleFeatureUnit
+SingleFilterUnit12CreationTool_title=SingleFilterUnit
+SingleFilterUnit12CreationTool_desc=Create new SingleFilterUnit
+SingleInputPort13CreationTool_title=SingleInputPort
+SingleInputPort13CreationTool_desc=Create new SingleInputPort
+SingleOutputPort14CreationTool_title=SingleOutputPort
+SingleOutputPort14CreationTool_desc=Create new SingleOutputPort
+SingleQueuedUnit15CreationTool_title=SingleQueuedUnit
+SingleQueuedUnit15CreationTool_desc=Create new SingleQueuedUnit
+MultiPortMapping1CreationTool_title=MultiPortMapping
+MultiPortMapping1CreationTool_desc=Create new MultiPortMapping
+MultiSinglePortMapping2CreationTool_title=MultiSinglePortMapping
+MultiSinglePortMapping2CreationTool_desc=Create new MultiSinglePortMapping
+SinglePortMapping3CreationTool_title=SinglePortMapping
+SinglePortMapping3CreationTool_desc=Create new SinglePortMapping
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart_title=SequentialUnitRefactoringUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+ConditionalUnitConditionalUnitIfCompartmentEditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartmentEditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartmentEditPart_title=ConditionalUnitElseCompartment
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart_title=SequentialUnitRefactoringUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+ConditionalUnitConditionalUnitIfCompartment2EditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartment2EditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartment2EditPart_title=ConditionalUnitElseCompartment
+CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart_title=CartesianQueuedUnitHelperUnitsCompartment
+CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart_title=CartesianQueuedUnitRefactoringUnitCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart_title=SequentialUnitRefactoringUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+ConditionalUnitConditionalUnitIfCompartment3EditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartment3EditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartment3EditPart_title=ConditionalUnitElseCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart_title=SequentialUnitRefactoringUnitsCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart_title=SequentialUnitRefactoringUnitsCompartment
+ConditionalUnitConditionalUnitIfCompartment4EditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartment4EditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartment4EditPart_title=ConditionalUnitElseCompartment
+ConditionalUnitConditionalUnitIfCompartment5EditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartment5EditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartment5EditPart_title=ConditionalUnitElseCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart_title=SequentialUnitRefactoringUnitsCompartment
+ConditionalUnitConditionalUnitIfCompartment6EditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartment6EditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartment6EditPart_title=ConditionalUnitElseCompartment
+ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart_title=ParallelQueuedUnitHelperUnitsCompartment
+ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart_title=ParallelQueuedUnitRefactoringUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart_title=SingleQueuedUnitHelperUnitsCompartment
+SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart_title=SingleQueuedUnitRefactoringUnitCompartment
+SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart_title=SequentialUnitHelperUnitsCompartment
+SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart_title=SequentialUnitRefactoringUnitsCompartment
+ConditionalUnitConditionalUnitIfCompartment7EditPart_title=ConditionalUnitIfCompartment
+ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart_title=ConditionalUnitHelperUnitsCompartment
+ConditionalUnitConditionalUnitThenCompartment7EditPart_title=ConditionalUnitThenCompartment
+ConditionalUnitConditionalUnitElseCompartment7EditPart_title=ConditionalUnitElseCompartment
+
+CommandName_OpenDiagram=Open Diagram
+NavigatorGroupName_MultiInputPort_3017_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3017_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3035_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3035_outgoinglinks=outgoing links
+NavigatorGroupName_MultiInputPort_3032_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3032_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3013_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3013_outgoinglinks=outgoing links
+NavigatorGroupName_MultiInputPort_3024_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3024_outgoinglinks=outgoing links
+NavigatorGroupName_MultiPortMapping_4002_target=target
+NavigatorGroupName_MultiPortMapping_4002_source=source
+NavigatorGroupName_MultiInputPort_3020_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3020_outgoinglinks=outgoing links
+NavigatorGroupName_SingleOutputPort_3018_outgoinglinks=outgoing links
+NavigatorGroupName_SinglePortMapping_4001_target=target
+NavigatorGroupName_SinglePortMapping_4001_source=source
+NavigatorGroupName_MultiInputPort_3010_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3010_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3023_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3023_outgoinglinks=outgoing links
+NavigatorGroupName_MultiOutputPort_3015_outgoinglinks=outgoing links
+NavigatorGroupName_SingleOutputPort_3011_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3005_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3005_outgoinglinks=outgoing links
+NavigatorGroupName_MultiInputPort_3002_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3002_outgoinglinks=outgoing links
+NavigatorGroupName_MultiInputPort_3006_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3006_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3031_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3031_outgoinglinks=outgoing links
+NavigatorGroupName_MultiOutputPort_3021_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_2001_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_2001_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3009_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3009_outgoinglinks=outgoing links
+NavigatorGroupName_CompositeRefactoring_1000_links=links
+NavigatorGroupName_SingleInputPort_3027_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3027_outgoinglinks=outgoing links
+NavigatorGroupName_SingleInputPort_3001_incominglinks=incoming links
+NavigatorGroupName_SingleInputPort_3001_outgoinglinks=outgoing links
+NavigatorGroupName_MultiInputPort_3028_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3028_outgoinglinks=outgoing links
+NavigatorGroupName_MultiSinglePortMapping_4003_target=target
+NavigatorGroupName_MultiSinglePortMapping_4003_source=source
+NavigatorGroupName_MultiInputPort_3014_incominglinks=incoming links
+NavigatorGroupName_MultiInputPort_3014_outgoinglinks=outgoing links
+NavigatorActionProvider_OpenDiagramActionName=Open Diagram
+AbstractParser_UnexpectedValueType=Value of type {0} is expected
+AbstractParser_WrongStringConversion=String value does not convert to {0} value
+AbstractParser_UnknownLiteral=Unknown literal: {0}
+
+MessageFormatParser_InvalidInputError=Invalid input at {0}
+ComrelModelingAssistantProviderTitle=Select domain model element
+ComrelModelingAssistantProviderMessage=Available domain model elements:
+CompositeUnits1Group_title=Composite Units
+AtomicUnits2Group_title=Atomic Units
+FilterUnits3Group_title=Filter Units
+FeatureUnits4Group_title=Feature Units
+Ports5Group_title=Ports
+Mappings6Group_title=Mappings
+CartesianQueuedUnit1CreationTool_title=CartesianQueuedUnit
+CartesianQueuedUnit1CreationTool_desc=Create new CartesianQueuedUnit
+ConditionCheck2CreationTool_title=ConditionCheck
+ConditionCheck2CreationTool_desc=Create new ConditionCheck
+ConditionalUnit3CreationTool_title=ConditionalUnit
+ConditionalUnit3CreationTool_desc=Create new ConditionalUnit
+ParallelQueuedUnit4CreationTool_title=ParallelQueuedUnit
+ParallelQueuedUnit4CreationTool_desc=Create new ParallelQueuedUnit
+SequentialUnit5CreationTool_title=SequentialUnit
+SequentialUnit5CreationTool_desc=Create new SequentialUnit
+SingleQueuedUnit6CreationTool_title=SingleQueuedUnit
+SingleQueuedUnit6CreationTool_desc=Create new SingleQueuedUnit
+MultiFilterUnit1CreationTool_title=MultiFilterUnit
+MultiFilterUnit1CreationTool_desc=Create new MultiFilterUnit
+SingleFilterUnit2CreationTool_title=SingleFilterUnit
+SingleFilterUnit2CreationTool_desc=Create new SingleFilterUnit
+MultiFeatureUnit1CreationTool_title=MultiFeatureUnit
+MultiFeatureUnit1CreationTool_desc=Create new MultiFeatureUnit
+SingleFeatureUnit2CreationTool_title=SingleFeatureUnit
+SingleFeatureUnit2CreationTool_desc=Create new SingleFeatureUnit
+MultiInputPort1CreationTool_title=MultiInputPort
+MultiInputPort1CreationTool_desc=Create new MultiInputPort
+MultiOutputPort2CreationTool_title=MultiOutputPort
+MultiOutputPort2CreationTool_desc=Create new MultiOutputPort
+SingleInputPort3CreationTool_title=SingleInputPort
+SingleInputPort3CreationTool_desc=Create new SingleInputPort
+SingleOutputPort4CreationTool_title=SingleOutputPort
+SingleOutputPort4CreationTool_desc=Create new SingleOutputPort
diff --git a/org.eclipse.emf.refactor.comrel.diagram/plugin.properties b/org.eclipse.emf.refactor.comrel.diagram/plugin.properties
new file mode 100644
index 0000000..79c5985
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/plugin.properties
@@ -0,0 +1,126 @@
+pluginName=Comrel Plugin
+providerName=Sample Plugin Provider, Inc
+
+editorName=Comrel Diagram Editing
+context.description=Comrel Diagram Editing
+context.name=In Comrel Diagram Editor
+newWizardName=Comrel Diagram
+newWizardDesc=Creates Comrel diagram.
+
+initDiagramActionLabel=Initialize comrel_diagram diagram file
+
+
+navigatorContentName=*.comrel_diagram diagram contents
+domainNavigatorContentName=*.comrel model contents
+update.diagram.name=Update Comrel diagram
+update.diagram.description=Perform Comrel diagram update
+
+
+# Property Sheet
+tab.appearance=Appearance
+tab.diagram=Rulers & Grid
+tab.domain=Core
+
+# Preferences
+prefpage.comrel.diagram.general=Comrel Diagram
+prefpage.comrel.diagram.appearance=Appearance
+prefpage.comrel.diagram.connections=Connections
+prefpage.comrel.diagram.printing=Printing
+prefpage.comrel.diagram.rulersAndGrid=Rulers And Grid
+
+
+# Providers
+metatype.name.CompositeRefactoring_1000=Undefined
+metatype.name.SingleInputPort_2001=SingleInputPort
+metatype.name.CartesianQueuedUnit_2002=CartesianQueuedUnit
+metatype.name.ParallelQueuedUnit_2003=ParallelQueuedUnit
+metatype.name.SingleQueuedUnit_2004=SingleQueuedUnit
+metatype.name.SequentialUnit_2005=SequentialUnit
+metatype.name.ConditionalUnit_2006=ConditionalUnit
+metatype.name.AtomicUnit_2007=AtomicUnit
+metatype.name.SingleInputPort_3001=SingleInputPort
+metatype.name.MultiInputPort_3002=MultiInputPort
+metatype.name.CartesianQueuedUnit_3003=CartesianQueuedUnit
+metatype.name.ParallelQueuedUnit_3004=ParallelQueuedUnit
+metatype.name.SingleInputPort_3005=SingleInputPort
+metatype.name.MultiInputPort_3006=MultiInputPort
+metatype.name.CartesianQueuedUnit_3007=CartesianQueuedUnit
+metatype.name.SingleFeatureUnit_3008=SingleFeatureUnit
+metatype.name.SingleInputPort_3009=SingleInputPort
+metatype.name.MultiInputPort_3010=MultiInputPort
+metatype.name.SingleOutputPort_3011=SingleOutputPort
+metatype.name.MultiFeatureUnit_3012=MultiFeatureUnit
+metatype.name.SingleInputPort_3013=SingleInputPort
+metatype.name.MultiInputPort_3014=MultiInputPort
+metatype.name.MultiOutputPort_3015=MultiOutputPort
+metatype.name.SingleFilterUnit_3016=SingleFilterUnit
+metatype.name.MultiInputPort_3017=MultiInputPort
+metatype.name.SingleOutputPort_3018=SingleOutputPort
+metatype.name.MultiFilterUnit_3019=MultiFilterUnit
+metatype.name.MultiInputPort_3020=MultiInputPort
+metatype.name.MultiOutputPort_3021=MultiOutputPort
+metatype.name.SingleQueuedUnit_3022=SingleQueuedUnit
+metatype.name.SingleInputPort_3023=SingleInputPort
+metatype.name.MultiInputPort_3024=MultiInputPort
+metatype.name.CartesianQueuedUnit_3025=CartesianQueuedUnit
+metatype.name.SequentialUnit_3026=SequentialUnit
+metatype.name.SingleInputPort_3027=SingleInputPort
+metatype.name.MultiInputPort_3028=MultiInputPort
+metatype.name.CartesianQueuedUnit_3029=CartesianQueuedUnit
+metatype.name.ConditionalUnit_3030=ConditionalUnit
+metatype.name.SingleInputPort_3031=SingleInputPort
+metatype.name.MultiInputPort_3032=MultiInputPort
+metatype.name.CartesianQueuedUnit_3033=CartesianQueuedUnit
+metatype.name.AtomicUnit_3034=AtomicUnit
+metatype.name.SingleInputPort_3035=SingleInputPort
+metatype.name.ParallelQueuedUnit_3036=ParallelQueuedUnit
+metatype.name.ParallelQueuedUnit_3037=ParallelQueuedUnit
+metatype.name.SingleFeatureUnit_3038=SingleFeatureUnit
+metatype.name.MultiFeatureUnit_3039=MultiFeatureUnit
+metatype.name.SingleFilterUnit_3040=SingleFilterUnit
+metatype.name.MultiFilterUnit_3041=MultiFilterUnit
+metatype.name.SingleQueuedUnit_3042=SingleQueuedUnit
+metatype.name.ParallelQueuedUnit_3043=ParallelQueuedUnit
+metatype.name.SequentialUnit_3044=SequentialUnit
+metatype.name.ParallelQueuedUnit_3045=ParallelQueuedUnit
+metatype.name.ConditionalUnit_3046=ConditionalUnit
+metatype.name.CartesianQueuedUnit_3047=CartesianQueuedUnit
+metatype.name.ParallelQueuedUnit_3048=ParallelQueuedUnit
+metatype.name.AtomicUnit_3049=AtomicUnit
+metatype.name.SingleFeatureUnit_3050=SingleFeatureUnit
+metatype.name.MultiFeatureUnit_3051=MultiFeatureUnit
+metatype.name.SingleFilterUnit_3052=SingleFilterUnit
+metatype.name.MultiFilterUnit_3053=MultiFilterUnit
+metatype.name.SingleQueuedUnit_3054=SingleQueuedUnit
+metatype.name.SingleFeatureUnit_3055=SingleFeatureUnit
+metatype.name.MultiFeatureUnit_3056=MultiFeatureUnit
+metatype.name.SingleFilterUnit_3057=SingleFilterUnit
+metatype.name.MultiFilterUnit_3058=MultiFilterUnit
+metatype.name.SingleQueuedUnit_3059=SingleQueuedUnit
+metatype.name.SequentialUnit_3060=SequentialUnit
+metatype.name.SingleFeatureUnit_3061=SingleFeatureUnit
+metatype.name.MultiFeatureUnit_3062=MultiFeatureUnit
+metatype.name.SingleFilterUnit_3063=SingleFilterUnit
+metatype.name.MultiFilterUnit_3064=MultiFilterUnit
+metatype.name.SingleQueuedUnit_3065=SingleQueuedUnit
+metatype.name.ConditionalUnit_3066=ConditionalUnit
+metatype.name.SingleQueuedUnit_3067=SingleQueuedUnit
+metatype.name.AtomicUnit_3068=AtomicUnit
+metatype.name.SequentialUnit_3069=SequentialUnit
+metatype.name.SequentialUnit_3070=SequentialUnit
+metatype.name.ConditionalUnit_3071=ConditionalUnit
+metatype.name.ConditionalUnit_3072=ConditionalUnit
+metatype.name.SequentialUnit_3073=SequentialUnit
+metatype.name.AtomicUnit_3074=AtomicUnit
+metatype.name.ConditionalUnit_3075=ConditionalUnit
+metatype.name.ConditionCheck_3076=ConditionCheck
+metatype.name.AtomicUnit_3077=AtomicUnit
+metatype.name.AtomicUnit_3078=AtomicUnit
+metatype.name.SinglePortMapping_4001=SinglePortMapping
+metatype.name.MultiPortMapping_4002=MultiPortMapping
+metatype.name.MultiSinglePortMapping_4003=MultiSinglePortMapping
+
+# Commands and menu actions
+cmdcategory.name=Comrel Editor Commands
+cmdcategory.desc=Comrel Editor Commands
+
diff --git a/org.eclipse.emf.refactor.comrel.diagram/plugin.xml b/org.eclipse.emf.refactor.comrel.diagram/plugin.xml
new file mode 100644
index 0000000..147f9ca
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/plugin.xml
@@ -0,0 +1,1438 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<!--
+
+-->
+<plugin>
+
+   <extension point="org.eclipse.team.core.fileTypes" id="repo-ftype">
+      <?gmfgen generated="true"?>
+      <fileTypes type="text" extension="comrel_diagram"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.extension_parser" id="resource-factory">
+      <?gmfgen generated="true"?>
+      <parser
+         type="comrel_diagram"
+         class="org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory">
+      </parser>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors" id="gmf-editor">
+      <?gmfgen generated="true"?>
+      <editor
+         id="comrel.diagram.part.ComrelDiagramEditorID"
+         name="%editorName"
+         icon="icons/obj16/ComrelDiagramFile.gif"
+         extensions="comrel_diagram"
+         default="true"
+         class="comrel.diagram.part.ComrelDiagramEditor"
+         matchingStrategy="comrel.diagram.part.ComrelMatchingStrategy"
+         contributorClass="comrel.diagram.part.ComrelDiagramActionBarContributor">
+      </editor>
+   </extension>
+   
+   <extension point="org.eclipse.ui.contexts" id="ui-context">
+      <?gmfgen generated="true"?>
+      <context
+         description="%context.description"
+         id="comrel.diagram.ui.diagramContext"
+         name="%context.name"
+         parentId="org.eclipse.gmf.runtime.diagram.ui.diagramContext">
+      </context>
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards" id="creation-wizard">
+      <?gmfgen generated="true"?>
+  	  <wizard
+  	     name="CoMReL diagram"
+  	     icon="icons/obj16/ComrelDiagramFile.gif"
+  	     category="comrel.generator.category"
+  	     class="comrel.diagram.part.ComrelCreationWizard"
+  	     id="comrel.diagram.part.ComrelCreationWizardID">
+  	  	 <description>%newWizardDesc</description>  
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.popupMenus" id="init-diagram-action">
+      <?gmfgen generated="true"?>
+      <objectContribution
+            id="comrel.diagram.InitDiagram"
+            nameFilter="*.comrel"
+            objectClass="org.eclipse.core.resources.IFile">
+         <action
+               label="%initDiagramActionLabel"
+               class="comrel.diagram.part.ComrelInitDiagramFileAction"
+               menubarPath="additions"
+               enablesFor="1"
+               id="comrel.diagram.InitDiagramAction">
+         </action>
+      </objectContribution>
+   </extension>
+	
+   <extension point="org.eclipse.gmf.runtime.common.ui.services.action.globalActionHandlerProviders" id="global-actions">
+      <?gmfgen generated="true"?>
+      <GlobalActionHandlerProvider
+         class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramGlobalActionHandlerProvider"
+         id="ComrelPresentation">
+         <Priority name="Lowest"/>
+         <ViewId id="comrel.diagram.part.ComrelDiagramEditorID">
+            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
+               <GlobalActionId actionId="delete"/>
+            </ElementType>
+            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart">
+               <GlobalActionId actionId="save"/>
+            </ElementType>
+         </ViewId>
+      </GlobalActionHandlerProvider>
+      <GlobalActionHandlerProvider
+         class="org.eclipse.gmf.runtime.diagram.ui.printing.render.providers.DiagramWithPrintGlobalActionHandlerProvider"
+         id="ComrelPresentationPrint">
+         <Priority name="Lowest"/>
+         <ViewId id="comrel.diagram.part.ComrelDiagramEditorID">
+            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
+               <GlobalActionId actionId="print"/>
+            </ElementType>
+         </ViewId>
+      </GlobalActionHandlerProvider>
+      <GlobalActionHandlerProvider
+         class="org.eclipse.gmf.runtime.diagram.ui.providers.ide.providers.DiagramIDEGlobalActionHandlerProvider"
+         id="ComrelPresentationIDE">
+         <Priority name="Lowest"/>
+         <ViewId id="comrel.diagram.part.ComrelDiagramEditorID">
+            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
+               <GlobalActionId actionId="bookmark"/>
+            </ElementType>
+         </ViewId>
+      </GlobalActionHandlerProvider>
+      <GlobalActionHandlerProvider
+            class="org.eclipse.gmf.runtime.diagram.ui.render.providers.DiagramUIRenderGlobalActionHandlerProvider"
+            id="ComrelRender">
+         <Priority name="Lowest"/>
+         <ViewId id="comrel.diagram.part.ComrelDiagramEditorID">
+            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
+               <GlobalActionId actionId="cut"/>
+               <GlobalActionId actionId="copy"/>
+               <GlobalActionId actionId="paste"/>
+            </ElementType>
+         </ViewId>
+      </GlobalActionHandlerProvider>
+   </extension>
+
+
+   <extension point="org.eclipse.gmf.runtime.common.ui.services.markerNavigationProviders" id="markers-navigation">
+      <?gmfgen generated="true"?>
+      <MarkerNavigationProvider class="comrel.diagram.providers.ComrelMarkerNavigationProvider">
+         <MarkerType name="comrel.diagram.diagnostic"/>
+         <Priority name="Lowest"/>
+      </MarkerNavigationProvider>
+   </extension>
+
+   <extension id="diagnostic" name="Comrel Plugin problems" point="org.eclipse.core.resources.markers">
+      <?gmfgen generated="true"?>
+      <super type="org.eclipse.core.resources.problemmarker"/>
+      <super type="org.eclipse.gmf.runtime.common.ui.services.marker"/>
+      <persistent value="true"/>
+   </extension>   
+
+   <extension id="validationDecoratorProvider" name="ValidationDecorations" point="org.eclipse.gmf.runtime.diagram.ui.decoratorProviders">
+      <?gmfgen generated="true"?>
+      <decoratorProvider class="comrel.diagram.providers.ComrelValidationDecoratorProvider">
+         <Priority name="Lowest"/>
+         <object class="org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart(org.eclipse.gmf.runtime.diagram.ui)" id="PRIMARY_VIEW"/>
+         <context decoratorTargets="PRIMARY_VIEW"/>
+      </decoratorProvider>
+   </extension>
+
+   <extension point="org.eclipse.core.runtime.preferences" id="prefs">
+      <?gmfgen generated="true"?>
+      <initializer class="comrel.diagram.preferences.DiagramPreferenceInitializer"/>
+   </extension>
+
+   <extension point="org.eclipse.ui.preferencePages" id="prefpages">
+      <?gmfgen generated="true"?>
+      <page
+            id="comrel.diagram.general"
+            name="%prefpage.comrel.diagram.general"
+            class="comrel.diagram.preferences.DiagramGeneralPreferencePage">
+      </page>
+      <page
+            id="comrel.diagram.appearance"
+            name="%prefpage.comrel.diagram.appearance"
+            category="comrel.diagram.general"
+            class="comrel.diagram.preferences.DiagramAppearancePreferencePage">
+      </page>
+      <page
+            id="comrel.diagram.connections"
+            name="%prefpage.comrel.diagram.connections"
+            category="comrel.diagram.general"
+            class="comrel.diagram.preferences.DiagramConnectionsPreferencePage">
+      </page>
+      <page
+            id="comrel.diagram.printing"
+            name="%prefpage.comrel.diagram.printing"
+            category="comrel.diagram.general"
+            class="comrel.diagram.preferences.DiagramPrintingPreferencePage">
+      </page>
+      <page
+            id="comrel.diagram.rulersAndGrid"
+            name="%prefpage.comrel.diagram.rulersAndGrid"
+            category="comrel.diagram.general"
+            class="comrel.diagram.preferences.DiagramRulersAndGridPreferencePage">
+      </page>
+   </extension>
+
+   <extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor" id="prop-contrib">
+      <?gmfgen generated="true"?>
+      <propertyContributor
+            contributorId="comrel.diagram"
+            labelProvider="comrel.diagram.sheet.ComrelSheetLabelProvider">
+         <propertyCategory category="domain"/>
+         <propertyCategory category="visual"/>
+         <propertyCategory category="extra"/>
+      </propertyContributor>
+   </extension>
+
+   <extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs" id="proptabs">
+      <?gmfgen generated="true"?>   
+      <propertyTabs contributorId="comrel.diagram">
+         <propertyTab
+             category="visual"
+             id="property.tab.AppearancePropertySection"
+             label="%tab.appearance"/>
+          <propertyTab
+             category="visual"
+             id="property.tab.DiagramPropertySection"
+             label="%tab.diagram"/>
+          <propertyTab
+             category="domain"
+             id="property.tab.domain"
+             label="%tab.domain"/>
+      </propertyTabs>
+   </extension>
+
+   <extension point="org.eclipse.ui.views.properties.tabbed.propertySections" id="propsections">
+      <?gmfgen generated="true"?>   
+      <propertySections contributorId="comrel.diagram">
+         <propertySection id="property.section.ConnectorAppearancePropertySection" 
+            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ConnectionEditPartPropertySectionFilter" 
+            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ConnectionAppearancePropertySection" 
+            tab="property.tab.AppearancePropertySection">
+         </propertySection>
+         <propertySection id="property.section.ShapeColorAndFontPropertySection" 
+            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ShapeEditPartPropertySectionFilter" 
+            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ShapeColorsAndFontsPropertySection" 
+            tab="property.tab.AppearancePropertySection">
+         </propertySection> 
+         <propertySection id="property.section.DiagramColorsAndFontsPropertySection" 
+            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" 
+            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.DiagramColorsAndFontsPropertySection" 
+            tab="property.tab.AppearancePropertySection">
+         </propertySection>     
+         <propertySection id="property.section.RulerGridPropertySection" 
+            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" 
+            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.grid.RulerGridPropertySection" 
+            tab="property.tab.DiagramPropertySection">
+         </propertySection>     
+         <propertySection
+            id="property.section.domain" 
+            tab="property.tab.domain"
+            class="comrel.diagram.sheet.ComrelPropertySection">
+            <input type="org.eclipse.gmf.runtime.notation.View"/>
+            <input type="org.eclipse.gef.EditPart"/>
+            <input type="comrel.diagram.navigator.ComrelAbstractNavigatorItem"/>
+         </propertySection>
+      </propertySections>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.diagram.core.viewProviders" id="view-provider">
+      <?gmfgen generated="true"?>
+      <viewProvider class="comrel.diagram.providers.ComrelViewProvider">
+         <Priority name="Lowest"/>
+         <object id="referencing-diagrams" class="org.eclipse.gmf.runtime.notation.Diagram">
+            <method name="getType()" value="comrel"/>
+         </object>
+         <context viewClass="org.eclipse.gmf.runtime.notation.Node" containerViews="referencing-diagrams"/>
+         <context viewClass="org.eclipse.gmf.runtime.notation.Diagram" semanticHints="Comrel"/>
+         <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints="2001,2002,2003,2004,2005,2006,2007,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078"/>
+         <context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints="4001,4002,4003"/>
+      </viewProvider>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.diagram.ui.editpartProviders" id="ep-provider">
+      <?gmfgen generated="true"?>
+      <editpartProvider class="comrel.diagram.providers.ComrelEditPartProvider">
+         <Priority name="Lowest"/>
+         <object class="org.eclipse.gmf.runtime.notation.Diagram" id="generated-diagram">
+            <method name="getType()" value="Comrel"/>
+         </object>
+         <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-nodes">
+            <method name="getType()" value="2001,2002,2003,2004,2005,2006,2007,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078"/>
+         </object>
+         <object class="org.eclipse.gmf.runtime.notation.Edge" id="generated-links">
+            <method name="getType()" value="4001,4002,4003"/>
+         </object>
+         <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-labels">
+            <method name="getType()" value="5001,5080,5081,5082,5083,5084,5085,5002,5003,5079,5078,5004,5005,5077,5009,5006,5007,5008,5013,5010,5011,5012,5016,5014,5015,5019,5017,5018,5076,5020,5021,5075,5074,5022,5023,5073,5072,5024,5025,5028,5027,5026,5071,5070,5029,5030,5031,5032,5069,5068,5067,5066,5065,5033,5035,5034,5036,5037,5038,5039,5064,5040,5041,5042,5043,5063,5062,5044,5045,5046,5047,5061,5060,5049,5048,5059,5058,5057,5056,5051,5050,5055,5052,5053,5054"/>
+         </object>
+         <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-compartments">
+            <method name="getType()" value="7001,7002,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013,7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029,7030,7031,7032,7033,7034,7035,7036,7037,7038,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084"/>
+         </object>
+         <context views="generated-diagram,generated-nodes,generated-links,generated-labels,generated-compartments"/>
+      </editpartProvider>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders" id="modelassist-provider">
+      <?gmfgen generated="true"?>
+      <modelingAssistantProvider class="comrel.diagram.providers.ComrelModelingAssistantProvider">
+         <Priority name="Lowest"/>
+         <object class="comrel.diagram.edit.parts.CompositeRefactoringEditPart" id="CompositeRefactoring_1000"/>
+         <object class="comrel.diagram.edit.parts.SingleInputPortEditPart" id="SingleInputPort_2001"/>
+         <object class="comrel.diagram.edit.parts.CartesianQueuedUnitEditPart" id="CartesianQueuedUnit_2002"/>
+         <object class="comrel.diagram.edit.parts.ParallelQueuedUnitEditPart" id="ParallelQueuedUnit_2003"/>
+         <object class="comrel.diagram.edit.parts.SingleQueuedUnitEditPart" id="SingleQueuedUnit_2004"/>
+         <object class="comrel.diagram.edit.parts.SequentialUnitEditPart" id="SequentialUnit_2005"/>
+         <object class="comrel.diagram.edit.parts.ConditionalUnitEditPart" id="ConditionalUnit_2006"/>
+         <object class="comrel.diagram.edit.parts.AtomicUnitEditPart" id="AtomicUnit_2007"/>
+         <context elements="CompositeRefactoring_1000,SingleInputPort_2001,CartesianQueuedUnit_2002,ParallelQueuedUnit_2003,SingleQueuedUnit_2004,SequentialUnit_2005,ConditionalUnit_2006,AtomicUnit_2007"/>
+      </modelingAssistantProvider>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.common.ui.services.iconProviders" id="icon-provider">
+      <?gmfgen generated="true"?>
+      <IconProvider class="comrel.diagram.providers.ComrelIconProvider">
+         <Priority name="Low"/>
+      </IconProvider>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.common.ui.services.parserProviders" id="parser-provider">
+      <?gmfgen generated="true"?>
+      <ParserProvider class="comrel.diagram.providers.ComrelParserProvider">
+         <Priority name="Lowest"/>
+      </ParserProvider>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.diagram.ui.decoratorProviders" id="decorator-provider">
+      <?gmfgen generated="true"?>
+      <decoratorProvider class="comrel.diagram.providers.ComrelShortcutsDecoratorProvider">
+         <Priority name="Lowest"/>
+         <object class="org.eclipse.gmf.runtime.notation.Node(org.eclipse.gmf.runtime.notation)" id="generated-top-nodes">
+            <method name="getType()" value="2001,2002,2003,2004,2005,2006,2007"/>
+         </object>
+         <context decoratorTargets="generated-top-nodes"/>
+      </decoratorProvider>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypes" id="element-types">
+      <?gmfgen generated="true"?>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.CompositeRefactoring_1000"
+               name="%metatype.name.CompositeRefactoring_1000"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="CompositeRefactoring"
+               edithelper="comrel.diagram.edit.helpers.CompositeRefactoringEditHelper">
+            <param name="semanticHint" value="1000"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SingleInputPort_2001"
+               name="%metatype.name.SingleInputPort_2001"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SingleInputPort"
+               edithelper="comrel.diagram.edit.helpers.SingleInputPortEditHelper">
+            <param name="semanticHint" value="2001"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.CartesianQueuedUnit_2002"
+               name="%metatype.name.CartesianQueuedUnit_2002"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="CartesianQueuedUnit"
+               edithelper="comrel.diagram.edit.helpers.CartesianQueuedUnitEditHelper">
+            <param name="semanticHint" value="2002"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ParallelQueuedUnit_2003"
+               name="%metatype.name.ParallelQueuedUnit_2003"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ParallelQueuedUnit_3004"/>
+            <param name="semanticHint" value="2003"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleQueuedUnit_2004"
+               name="%metatype.name.SingleQueuedUnit_2004"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleQueuedUnit_3022"/>
+            <param name="semanticHint" value="2004"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SequentialUnit_2005"
+               name="%metatype.name.SequentialUnit_2005"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SequentialUnit_3026"/>
+            <param name="semanticHint" value="2005"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ConditionalUnit_2006"
+               name="%metatype.name.ConditionalUnit_2006"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ConditionalUnit_3030"/>
+            <param name="semanticHint" value="2006"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.AtomicUnit_2007"
+               name="%metatype.name.AtomicUnit_2007"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.AtomicUnit_3034"/>
+            <param name="semanticHint" value="2007"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3001"
+               name="%metatype.name.SingleInputPort_3001"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3001"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.MultiInputPort_3002"
+               name="%metatype.name.MultiInputPort_3002"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="MultiInputPort"
+               edithelper="comrel.diagram.edit.helpers.MultiInputPortEditHelper">
+            <param name="semanticHint" value="3002"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.CartesianQueuedUnit_3003"
+               name="%metatype.name.CartesianQueuedUnit_3003"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.CartesianQueuedUnit_2002"/>
+            <param name="semanticHint" value="3003"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.ParallelQueuedUnit_3004"
+               name="%metatype.name.ParallelQueuedUnit_3004"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="ParallelQueuedUnit"
+               edithelper="comrel.diagram.edit.helpers.ParallelQueuedUnitEditHelper">
+            <param name="semanticHint" value="3004"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3005"
+               name="%metatype.name.SingleInputPort_3005"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3005"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3006"
+               name="%metatype.name.MultiInputPort_3006"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3006"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.CartesianQueuedUnit_3007"
+               name="%metatype.name.CartesianQueuedUnit_3007"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.CartesianQueuedUnit_2002"/>
+            <param name="semanticHint" value="3007"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SingleFeatureUnit_3008"
+               name="%metatype.name.SingleFeatureUnit_3008"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SingleFeatureUnit"
+               edithelper="comrel.diagram.edit.helpers.SingleFeatureUnitEditHelper">
+            <param name="semanticHint" value="3008"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3009"
+               name="%metatype.name.SingleInputPort_3009"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3009"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3010"
+               name="%metatype.name.MultiInputPort_3010"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3010"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SingleOutputPort_3011"
+               name="%metatype.name.SingleOutputPort_3011"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SingleOutputPort"
+               edithelper="comrel.diagram.edit.helpers.SingleOutputPortEditHelper">
+            <param name="semanticHint" value="3011"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.MultiFeatureUnit_3012"
+               name="%metatype.name.MultiFeatureUnit_3012"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="MultiFeatureUnit"
+               edithelper="comrel.diagram.edit.helpers.MultiFeatureUnitEditHelper">
+            <param name="semanticHint" value="3012"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3013"
+               name="%metatype.name.SingleInputPort_3013"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3013"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3014"
+               name="%metatype.name.MultiInputPort_3014"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3014"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.MultiOutputPort_3015"
+               name="%metatype.name.MultiOutputPort_3015"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="MultiOutputPort"
+               edithelper="comrel.diagram.edit.helpers.MultiOutputPortEditHelper">
+            <param name="semanticHint" value="3015"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SingleFilterUnit_3016"
+               name="%metatype.name.SingleFilterUnit_3016"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SingleFilterUnit"
+               edithelper="comrel.diagram.edit.helpers.SingleFilterUnitEditHelper">
+            <param name="semanticHint" value="3016"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3017"
+               name="%metatype.name.MultiInputPort_3017"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3017"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleOutputPort_3018"
+               name="%metatype.name.SingleOutputPort_3018"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleOutputPort_3011"/>
+            <param name="semanticHint" value="3018"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.MultiFilterUnit_3019"
+               name="%metatype.name.MultiFilterUnit_3019"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="MultiFilterUnit"
+               edithelper="comrel.diagram.edit.helpers.MultiFilterUnitEditHelper">
+            <param name="semanticHint" value="3019"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3020"
+               name="%metatype.name.MultiInputPort_3020"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3020"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiOutputPort_3021"
+               name="%metatype.name.MultiOutputPort_3021"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiOutputPort_3015"/>
+            <param name="semanticHint" value="3021"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SingleQueuedUnit_3022"
+               name="%metatype.name.SingleQueuedUnit_3022"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SingleQueuedUnit"
+               edithelper="comrel.diagram.edit.helpers.SingleQueuedUnitEditHelper">
+            <param name="semanticHint" value="3022"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3023"
+               name="%metatype.name.SingleInputPort_3023"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3023"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3024"
+               name="%metatype.name.MultiInputPort_3024"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3024"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.CartesianQueuedUnit_3025"
+               name="%metatype.name.CartesianQueuedUnit_3025"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.CartesianQueuedUnit_2002"/>
+            <param name="semanticHint" value="3025"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SequentialUnit_3026"
+               name="%metatype.name.SequentialUnit_3026"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SequentialUnit"
+               edithelper="comrel.diagram.edit.helpers.SequentialUnitEditHelper">
+            <param name="semanticHint" value="3026"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3027"
+               name="%metatype.name.SingleInputPort_3027"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3027"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3028"
+               name="%metatype.name.MultiInputPort_3028"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3028"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.CartesianQueuedUnit_3029"
+               name="%metatype.name.CartesianQueuedUnit_3029"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.CartesianQueuedUnit_2002"/>
+            <param name="semanticHint" value="3029"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.ConditionalUnit_3030"
+               name="%metatype.name.ConditionalUnit_3030"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="ConditionalUnit"
+               edithelper="comrel.diagram.edit.helpers.ConditionalUnitEditHelper">
+            <param name="semanticHint" value="3030"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3031"
+               name="%metatype.name.SingleInputPort_3031"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3031"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiInputPort_3032"
+               name="%metatype.name.MultiInputPort_3032"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiInputPort_3002"/>
+            <param name="semanticHint" value="3032"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.CartesianQueuedUnit_3033"
+               name="%metatype.name.CartesianQueuedUnit_3033"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.CartesianQueuedUnit_2002"/>
+            <param name="semanticHint" value="3033"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.AtomicUnit_3034"
+               name="%metatype.name.AtomicUnit_3034"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="AtomicUnit"
+               edithelper="comrel.diagram.edit.helpers.AtomicUnitEditHelper">
+            <param name="semanticHint" value="3034"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleInputPort_3035"
+               name="%metatype.name.SingleInputPort_3035"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleInputPort_2001"/>
+            <param name="semanticHint" value="3035"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ParallelQueuedUnit_3036"
+               name="%metatype.name.ParallelQueuedUnit_3036"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ParallelQueuedUnit_3004"/>
+            <param name="semanticHint" value="3036"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ParallelQueuedUnit_3037"
+               name="%metatype.name.ParallelQueuedUnit_3037"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ParallelQueuedUnit_3004"/>
+            <param name="semanticHint" value="3037"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFeatureUnit_3038"
+               name="%metatype.name.SingleFeatureUnit_3038"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFeatureUnit_3008"/>
+            <param name="semanticHint" value="3038"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFeatureUnit_3039"
+               name="%metatype.name.MultiFeatureUnit_3039"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFeatureUnit_3012"/>
+            <param name="semanticHint" value="3039"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFilterUnit_3040"
+               name="%metatype.name.SingleFilterUnit_3040"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFilterUnit_3016"/>
+            <param name="semanticHint" value="3040"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFilterUnit_3041"
+               name="%metatype.name.MultiFilterUnit_3041"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFilterUnit_3019"/>
+            <param name="semanticHint" value="3041"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleQueuedUnit_3042"
+               name="%metatype.name.SingleQueuedUnit_3042"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleQueuedUnit_3022"/>
+            <param name="semanticHint" value="3042"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ParallelQueuedUnit_3043"
+               name="%metatype.name.ParallelQueuedUnit_3043"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ParallelQueuedUnit_3004"/>
+            <param name="semanticHint" value="3043"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SequentialUnit_3044"
+               name="%metatype.name.SequentialUnit_3044"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SequentialUnit_3026"/>
+            <param name="semanticHint" value="3044"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ParallelQueuedUnit_3045"
+               name="%metatype.name.ParallelQueuedUnit_3045"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ParallelQueuedUnit_3004"/>
+            <param name="semanticHint" value="3045"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ConditionalUnit_3046"
+               name="%metatype.name.ConditionalUnit_3046"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ConditionalUnit_3030"/>
+            <param name="semanticHint" value="3046"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.CartesianQueuedUnit_3047"
+               name="%metatype.name.CartesianQueuedUnit_3047"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.CartesianQueuedUnit_2002"/>
+            <param name="semanticHint" value="3047"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ParallelQueuedUnit_3048"
+               name="%metatype.name.ParallelQueuedUnit_3048"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ParallelQueuedUnit_3004"/>
+            <param name="semanticHint" value="3048"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.AtomicUnit_3049"
+               name="%metatype.name.AtomicUnit_3049"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.AtomicUnit_3034"/>
+            <param name="semanticHint" value="3049"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFeatureUnit_3050"
+               name="%metatype.name.SingleFeatureUnit_3050"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFeatureUnit_3008"/>
+            <param name="semanticHint" value="3050"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFeatureUnit_3051"
+               name="%metatype.name.MultiFeatureUnit_3051"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFeatureUnit_3012"/>
+            <param name="semanticHint" value="3051"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFilterUnit_3052"
+               name="%metatype.name.SingleFilterUnit_3052"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFilterUnit_3016"/>
+            <param name="semanticHint" value="3052"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFilterUnit_3053"
+               name="%metatype.name.MultiFilterUnit_3053"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFilterUnit_3019"/>
+            <param name="semanticHint" value="3053"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleQueuedUnit_3054"
+               name="%metatype.name.SingleQueuedUnit_3054"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleQueuedUnit_3022"/>
+            <param name="semanticHint" value="3054"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFeatureUnit_3055"
+               name="%metatype.name.SingleFeatureUnit_3055"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFeatureUnit_3008"/>
+            <param name="semanticHint" value="3055"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFeatureUnit_3056"
+               name="%metatype.name.MultiFeatureUnit_3056"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFeatureUnit_3012"/>
+            <param name="semanticHint" value="3056"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFilterUnit_3057"
+               name="%metatype.name.SingleFilterUnit_3057"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFilterUnit_3016"/>
+            <param name="semanticHint" value="3057"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFilterUnit_3058"
+               name="%metatype.name.MultiFilterUnit_3058"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFilterUnit_3019"/>
+            <param name="semanticHint" value="3058"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleQueuedUnit_3059"
+               name="%metatype.name.SingleQueuedUnit_3059"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleQueuedUnit_3022"/>
+            <param name="semanticHint" value="3059"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SequentialUnit_3060"
+               name="%metatype.name.SequentialUnit_3060"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SequentialUnit_3026"/>
+            <param name="semanticHint" value="3060"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFeatureUnit_3061"
+               name="%metatype.name.SingleFeatureUnit_3061"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFeatureUnit_3008"/>
+            <param name="semanticHint" value="3061"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFeatureUnit_3062"
+               name="%metatype.name.MultiFeatureUnit_3062"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFeatureUnit_3012"/>
+            <param name="semanticHint" value="3062"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleFilterUnit_3063"
+               name="%metatype.name.SingleFilterUnit_3063"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleFilterUnit_3016"/>
+            <param name="semanticHint" value="3063"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.MultiFilterUnit_3064"
+               name="%metatype.name.MultiFilterUnit_3064"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.MultiFilterUnit_3019"/>
+            <param name="semanticHint" value="3064"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleQueuedUnit_3065"
+               name="%metatype.name.SingleQueuedUnit_3065"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleQueuedUnit_3022"/>
+            <param name="semanticHint" value="3065"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ConditionalUnit_3066"
+               name="%metatype.name.ConditionalUnit_3066"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ConditionalUnit_3030"/>
+            <param name="semanticHint" value="3066"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SingleQueuedUnit_3067"
+               name="%metatype.name.SingleQueuedUnit_3067"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SingleQueuedUnit_3022"/>
+            <param name="semanticHint" value="3067"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.AtomicUnit_3068"
+               name="%metatype.name.AtomicUnit_3068"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.AtomicUnit_3034"/>
+            <param name="semanticHint" value="3068"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SequentialUnit_3069"
+               name="%metatype.name.SequentialUnit_3069"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SequentialUnit_3026"/>
+            <param name="semanticHint" value="3069"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SequentialUnit_3070"
+               name="%metatype.name.SequentialUnit_3070"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SequentialUnit_3026"/>
+            <param name="semanticHint" value="3070"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ConditionalUnit_3071"
+               name="%metatype.name.ConditionalUnit_3071"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ConditionalUnit_3030"/>
+            <param name="semanticHint" value="3071"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ConditionalUnit_3072"
+               name="%metatype.name.ConditionalUnit_3072"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ConditionalUnit_3030"/>
+            <param name="semanticHint" value="3072"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.SequentialUnit_3073"
+               name="%metatype.name.SequentialUnit_3073"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.SequentialUnit_3026"/>
+            <param name="semanticHint" value="3073"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.AtomicUnit_3074"
+               name="%metatype.name.AtomicUnit_3074"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.AtomicUnit_3034"/>
+            <param name="semanticHint" value="3074"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.ConditionalUnit_3075"
+               name="%metatype.name.ConditionalUnit_3075"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.ConditionalUnit_3030"/>
+            <param name="semanticHint" value="3075"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.ConditionCheck_3076"
+               name="%metatype.name.ConditionCheck_3076"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="ConditionCheck"
+               edithelper="comrel.diagram.edit.helpers.ConditionCheckEditHelper">
+            <param name="semanticHint" value="3076"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.AtomicUnit_3077"
+               name="%metatype.name.AtomicUnit_3077"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.AtomicUnit_3034"/>
+            <param name="semanticHint" value="3077"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <specializationType
+               id="comrel.diagram.AtomicUnit_3078"
+               name="%metatype.name.AtomicUnit_3078"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+            <specializes id="comrel.diagram.AtomicUnit_3034"/>
+            <param name="semanticHint" value="3078"/>
+         </specializationType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.SinglePortMapping_4001"
+               name="%metatype.name.SinglePortMapping_4001"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="SinglePortMapping"
+               edithelper="comrel.diagram.edit.helpers.SinglePortMappingEditHelper">
+            <param name="semanticHint" value="4001"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.MultiPortMapping_4002"
+               name="%metatype.name.MultiPortMapping_4002"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="MultiPortMapping"
+               edithelper="comrel.diagram.edit.helpers.MultiPortMappingEditHelper">
+            <param name="semanticHint" value="4002"/>
+         </metamodelType>
+      </metamodel>
+      <metamodel nsURI="http://comrel/0.1">
+         <metamodelType
+               id="comrel.diagram.MultiSinglePortMapping_4003"
+               name="%metatype.name.MultiSinglePortMapping_4003"
+               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
+               eclass="MultiSinglePortMapping"
+               edithelper="comrel.diagram.edit.helpers.MultiSinglePortMappingEditHelper">
+            <param name="semanticHint" value="4003"/>
+         </metamodelType>
+      </metamodel>
+   </extension>
+
+   <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypeBindings" id="element-types-bindings">
+      <?gmfgen generated="true"?>
+      <clientContext id="comrel.diagram.TypeContext">
+         <enablement>
+            <test
+               property="org.eclipse.gmf.runtime.emf.core.editingDomain"
+               value="comrel.diagram.EditingDomain"/>
+         </enablement>
+      </clientContext> 
+      <binding context="comrel.diagram.TypeContext">
+         <elementType ref="comrel.diagram.CompositeRefactoring_1000"/>
+         <elementType ref="comrel.diagram.SingleInputPort_2001"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_2002"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_2003"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_2004"/>
+         <elementType ref="comrel.diagram.SequentialUnit_2005"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_2006"/>
+         <elementType ref="comrel.diagram.AtomicUnit_2007"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3001"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3002"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_3003"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_3004"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3005"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3006"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_3007"/>
+         <elementType ref="comrel.diagram.SingleFeatureUnit_3008"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3009"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3010"/>
+         <elementType ref="comrel.diagram.SingleOutputPort_3011"/>
+         <elementType ref="comrel.diagram.MultiFeatureUnit_3012"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3013"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3014"/>
+         <elementType ref="comrel.diagram.MultiOutputPort_3015"/>
+         <elementType ref="comrel.diagram.SingleFilterUnit_3016"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3017"/>
+         <elementType ref="comrel.diagram.SingleOutputPort_3018"/>
+         <elementType ref="comrel.diagram.MultiFilterUnit_3019"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3020"/>
+         <elementType ref="comrel.diagram.MultiOutputPort_3021"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_3022"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3023"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3024"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_3025"/>
+         <elementType ref="comrel.diagram.SequentialUnit_3026"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3027"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3028"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_3029"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_3030"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3031"/>
+         <elementType ref="comrel.diagram.MultiInputPort_3032"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_3033"/>
+         <elementType ref="comrel.diagram.AtomicUnit_3034"/>
+         <elementType ref="comrel.diagram.SingleInputPort_3035"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_3036"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_3037"/>
+         <elementType ref="comrel.diagram.SingleFeatureUnit_3038"/>
+         <elementType ref="comrel.diagram.MultiFeatureUnit_3039"/>
+         <elementType ref="comrel.diagram.SingleFilterUnit_3040"/>
+         <elementType ref="comrel.diagram.MultiFilterUnit_3041"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_3042"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_3043"/>
+         <elementType ref="comrel.diagram.SequentialUnit_3044"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_3045"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_3046"/>
+         <elementType ref="comrel.diagram.CartesianQueuedUnit_3047"/>
+         <elementType ref="comrel.diagram.ParallelQueuedUnit_3048"/>
+         <elementType ref="comrel.diagram.AtomicUnit_3049"/>
+         <elementType ref="comrel.diagram.SingleFeatureUnit_3050"/>
+         <elementType ref="comrel.diagram.MultiFeatureUnit_3051"/>
+         <elementType ref="comrel.diagram.SingleFilterUnit_3052"/>
+         <elementType ref="comrel.diagram.MultiFilterUnit_3053"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_3054"/>
+         <elementType ref="comrel.diagram.SingleFeatureUnit_3055"/>
+         <elementType ref="comrel.diagram.MultiFeatureUnit_3056"/>
+         <elementType ref="comrel.diagram.SingleFilterUnit_3057"/>
+         <elementType ref="comrel.diagram.MultiFilterUnit_3058"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_3059"/>
+         <elementType ref="comrel.diagram.SequentialUnit_3060"/>
+         <elementType ref="comrel.diagram.SingleFeatureUnit_3061"/>
+         <elementType ref="comrel.diagram.MultiFeatureUnit_3062"/>
+         <elementType ref="comrel.diagram.SingleFilterUnit_3063"/>
+         <elementType ref="comrel.diagram.MultiFilterUnit_3064"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_3065"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_3066"/>
+         <elementType ref="comrel.diagram.SingleQueuedUnit_3067"/>
+         <elementType ref="comrel.diagram.AtomicUnit_3068"/>
+         <elementType ref="comrel.diagram.SequentialUnit_3069"/>
+         <elementType ref="comrel.diagram.SequentialUnit_3070"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_3071"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_3072"/>
+         <elementType ref="comrel.diagram.SequentialUnit_3073"/>
+         <elementType ref="comrel.diagram.AtomicUnit_3074"/>
+         <elementType ref="comrel.diagram.ConditionalUnit_3075"/>
+         <elementType ref="comrel.diagram.ConditionCheck_3076"/>
+         <elementType ref="comrel.diagram.AtomicUnit_3077"/>
+         <elementType ref="comrel.diagram.AtomicUnit_3078"/>
+         <elementType ref="comrel.diagram.SinglePortMapping_4001"/>
+         <elementType ref="comrel.diagram.MultiPortMapping_4002"/>
+         <elementType ref="comrel.diagram.MultiSinglePortMapping_4003"/>
+         <advice ref="org.eclipse.gmf.runtime.diagram.core.advice.notationDepdendents"/>
+      </binding>
+   </extension>
+	   <extension point="org.eclipse.core.expressions.propertyTesters" id="navigator-proptest.isURIEditorInput">
+      <?gmfgen generated="true"?>
+       <propertyTester
+           id="comrel.diagram.URIEditorInputPropertyTester"
+           type="org.eclipse.emf.common.ui.URIEditorInput"
+           namespace="comrel.diagram"
+           properties="isURIEditorInput"
+           class="comrel.diagram.part.ComrelUriEditorInputTester">
+       </propertyTester>
+   </extension>
+
+	   <extension point="org.eclipse.core.expressions.propertyTesters" id="navigator-proptest.isShortcut">
+      <?gmfgen generated="true"?>
+       <propertyTester
+           id="comrel.diagram.ShortcutPropertyTester"
+           type="org.eclipse.gmf.runtime.notation.View"
+           namespace="comrel.diagram"
+           properties="isShortcut"
+           class="comrel.diagram.part.ComrelShortcutPropertyTester">
+       </propertyTester>
+   </extension>
+
+	   <extension point="org.eclipse.ui.navigator.viewer" id="navigator-viewbinding">
+      <?gmfgen generated="true"?>
+      <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
+         <includes>
+            <contentExtension pattern="comrel.diagram.resourceContent"/>
+			<contentExtension pattern="comrel.diagram.domainResourceContent"/>
+            <contentExtension pattern="comrel.diagram.navigatorLinkHelper"/>
+         </includes>
+      </viewerContentBinding>
+      <viewerActionBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
+         <includes>
+            <actionExtension pattern="comrel.diagram.navigatorActionProvider"/>
+         </includes>
+      </viewerActionBinding>
+   </extension>
+
+   <extension point="org.eclipse.ui.navigator.navigatorContent" id="navigator-content">
+      <?gmfgen generated="true"?>
+      <navigatorContent
+            id="comrel.diagram.resourceContent" 
+            name="%navigatorContentName" 
+            priority="normal" 
+            contentProvider="comrel.diagram.navigator.ComrelNavigatorContentProvider" 
+            labelProvider="comrel.diagram.navigator.ComrelNavigatorLabelProvider"
+            icon="icons/obj16/ComrelDiagramFile.gif"
+            activeByDefault="true">
+         <triggerPoints>
+            <or>
+	           <and>
+    	          <instanceof value="org.eclipse.core.resources.IFile"/>
+        	      <test property="org.eclipse.core.resources.extension" value="comrel_diagram"/>
+               </and>
+               <instanceof value="comrel.diagram.navigator.ComrelAbstractNavigatorItem"/>
+           	   <adapt type="org.eclipse.gmf.runtime.notation.View">
+           	      <test property="comrel.diagram.isShortcut"/>
+           	   </adapt>
+            </or>
+         </triggerPoints>
+         <possibleChildren>
+            <or>
+         	   <instanceof value="comrel.diagram.navigator.ComrelAbstractNavigatorItem"/>
+           	   <adapt type="org.eclipse.gmf.runtime.notation.View">
+           	      <test property="comrel.diagram.isShortcut"/>
+           	   </adapt>
+            </or>
+         </possibleChildren>
+         <commonSorter 
+               id="comrel.diagram.navigatorSorter" 
+               class="comrel.diagram.navigator.ComrelNavigatorSorter">
+            <parentExpression>
+               <or>
+	              <and>
+    	             <instanceof value="org.eclipse.core.resources.IFile"/>
+        	         <test property="org.eclipse.core.resources.extension" value="comrel_diagram"/>
+                  </and>
+                  <instanceof value="comrel.diagram.navigator.ComrelAbstractNavigatorItem"/>
+               </or>
+            </parentExpression>
+         </commonSorter>
+      </navigatorContent>
+      <navigatorContent
+            id="comrel.diagram.domainResourceContent" 
+            name="%domainNavigatorContentName" 
+            priority="normal" 
+            contentProvider="comrel.diagram.navigator.ComrelDomainNavigatorContentProvider" 
+            labelProvider="comrel.diagram.navigator.ComrelDomainNavigatorLabelProvider"
+            icon="icons/obj16/ComrelDiagramFile.gif"
+            activeByDefault="true">
+         <triggerPoints>
+            <or>
+	           <and>
+    	          <instanceof value="org.eclipse.core.resources.IFile"/>
+        	      <test property="org.eclipse.core.resources.extension" value="comrel"/>
+               </and>
+               <instanceof value="comrel.diagram.navigator.ComrelDomainNavigatorItem"/>
+            </or>
+         </triggerPoints>
+         <possibleChildren>
+            <instanceof value="comrel.diagram.navigator.ComrelDomainNavigatorItem"/>
+         </possibleChildren>
+      </navigatorContent>
+      <actionProvider
+            id="comrel.diagram.navigatorActionProvider"
+            class="comrel.diagram.navigator.ComrelNavigatorActionProvider">
+         <enablement>
+            <or>
+               <instanceof value="comrel.diagram.navigator.ComrelAbstractNavigatorItem"/>
+           	   <adapt type="org.eclipse.gmf.runtime.notation.View">
+           	      <test property="comrel.diagram.isShortcut"/>
+           	   </adapt>
+            </or>
+         </enablement>
+      </actionProvider>
+   </extension>
+   
+	   <extension point="org.eclipse.ui.navigator.linkHelper" id="navigator-linkhelper">
+      <?gmfgen generated="true"?>
+      <linkHelper
+            id="comrel.diagram.navigatorLinkHelper"
+            class="comrel.diagram.navigator.ComrelNavigatorLinkHelper">
+         <editorInputEnablement>
+            <and>
+               <instanceof value="org.eclipse.emf.common.ui.URIEditorInput"/>
+               <test property="comrel.diagram.isURIEditorInput"/>
+            </and>
+         </editorInputEnablement>
+         <selectionEnablement>
+            <instanceof value="comrel.diagram.navigator.ComrelAbstractNavigatorItem"/>
+         </selectionEnablement>
+      </linkHelper>
+   </extension>
+   <extension point="org.eclipse.ui.commands" id="update-cmd">
+      <?gmfgen generated="true"?>
+      <command
+         categoryId="org.eclipse.ui.category.edit"
+         defaultHandler="comrel.diagram.part.ComrelDiagramUpdateCommand"
+         description="%update.diagram.description"
+         id="comrel.diagram.updateDiagram"
+         name="%update.diagram.name"/>
+   </extension>
+   
+   <extension point="org.eclipse.ui.bindings" id="update-cmd-binding">
+      <?gmfgen generated="true"?>
+      <key 
+         commandId="comrel.diagram.updateDiagram"
+         contextId="comrel.diagram.ui.diagramContext"
+         schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+         sequence="F5"/>
+   </extension>
+
+   <extension point="org.eclipse.ui.menus" id="context-menus">
+      <?gmfgen generated="true"?>
+      <!-- menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=">
+      </menuContribution>
+      <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=">
+      </menuContribution -->
+      <menuContribution locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu">
+         <command commandId="comrel.diagram.LoadResourceAction">
+            <visibleWhen>
+               <and>
+                  <with variable="activePartId"><equals value="comrel.diagram.part.ComrelDiagramEditorID"/></with>
+                  <with variable="selection"><iterate ifEmpty="false"> 
+                     <instanceof value="comrel.diagram.edit.parts.CompositeRefactoringEditPart"/>
+                  </iterate></with>
+               </and>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+
+   <extension point="org.eclipse.ui.commands" id="menu-commands">
+      <?gmfgen generated="true"?>
+      <category id="comrel.diagram.part.ComrelDiagramEditorID" name="%cmdcategory.name" description="%cmdcategory.desc"/>
+      <command id="comrel.diagram.LoadResourceAction"
+         name="Load Resource"
+         categoryId="comrel.diagram.part.ComrelDiagramEditorID"
+         defaultHandler="comrel.diagram.part.LoadResourceAction"/>
+   </extension>
+
+   <extension point="org.eclipse.ui.handlers" id="menu-handlers">
+      <?gmfgen generated="true"?>
+   </extension>
+
+   <!-- optionally, specify keybindings -->
+</plugin>
diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit2CreateCommand.java
new file mode 100644
index 0000000..1c11554
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit2CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+

+/**

+ * @generated

+ */

+public class AtomicUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit3CreateCommand.java
new file mode 100644
index 0000000..8c3acc2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit3CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class AtomicUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnits() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnits(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit4CreateCommand.java
new file mode 100644
index 0000000..a79f5d1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit4CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class AtomicUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit5CreateCommand.java
new file mode 100644
index 0000000..e187479
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit5CreateCommand.java
@@ -0,0 +1,112 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class AtomicUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getRefactoringUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit6CreateCommand.java
new file mode 100644
index 0000000..b245bda
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit6CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class AtomicUnit6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getThen() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setThen(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit7CreateCommand.java
new file mode 100644
index 0000000..032c194
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnit7CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class AtomicUnit7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getElse() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setElse(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnitCreateCommand.java
new file mode 100644
index 0000000..18e2b16
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/AtomicUnitCreateCommand.java
@@ -0,0 +1,115 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+

+/**

+ * @generated

+ */

+public class AtomicUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CompositeRefactoring container = (CompositeRefactoring) getElementToEdit();

+		if (container.getMainRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des ModelRefactorings und

+		 * erstellt anhand dessen die AtomicUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String refId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.ModelRefactoring refactoring = cr

+				.getEmfRefactoringAsModelRefactoring(refId);

+		if (refactoring != null

+				&& !cr.getModelRefactorings().contains(refactoring)) {

+			cr.getModelRefactorings().add(refactoring);

+		}

+		comrel.AtomicUnit newElement = factory.createAtomicUnit(refactoring);

+		/* end of change */

+

+		CompositeRefactoring owner = (CompositeRefactoring) getElementToEdit();

+		owner.setMainRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(AtomicUnit newElement, IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit2CreateCommand.java
new file mode 100644
index 0000000..defd644
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit2CreateCommand.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+		newElement.init();

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit3CreateCommand.java
new file mode 100644
index 0000000..3035806
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit3CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnits() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+		newElement.init();

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnits(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit4CreateCommand.java
new file mode 100644
index 0000000..8c997d5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit4CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+		newElement.init();

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit5CreateCommand.java
new file mode 100644
index 0000000..a64f6af
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit5CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+		newElement.init();

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getRefactoringUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit6CreateCommand.java
new file mode 100644
index 0000000..46c3ea8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit6CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getThen() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+		newElement.init();

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setThen(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit7CreateCommand.java
new file mode 100644
index 0000000..cc3e22f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnit7CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getElse() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setElse(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnitCreateCommand.java
new file mode 100644
index 0000000..b80bf51
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/CartesianQueuedUnitCreateCommand.java
@@ -0,0 +1,97 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CompositeRefactoring container = (CompositeRefactoring) getElementToEdit();

+		if (container.getMainRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		CartesianQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createCartesianQueuedUnit();

+		newElement.init();

+

+		CompositeRefactoring owner = (CompositeRefactoring) getElementToEdit();

+		owner.setMainRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(CartesianQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ComrelCreateShortcutDecorationsCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ComrelCreateShortcutDecorationsCommand.java
new file mode 100644
index 0000000..15a6161
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ComrelCreateShortcutDecorationsCommand.java
@@ -0,0 +1,74 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.List;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.emf.ecore.EcoreFactory;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+

+/**

+ * @generated

+ */

+public class ComrelCreateShortcutDecorationsCommand extends

+		AbstractTransactionalCommand {

+

+	/**

+	 * @generated

+	 */

+	private List myDescriptors;

+

+	/**

+	 * @generated

+	 */

+	public ComrelCreateShortcutDecorationsCommand(

+			TransactionalEditingDomain editingDomain, View parentView,

+			List viewDescriptors) {

+		super(editingDomain, "Create Shortcuts", getWorkspaceFiles(parentView)); //$NON-NLS-1$

+		myDescriptors = viewDescriptors;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ComrelCreateShortcutDecorationsCommand(

+			TransactionalEditingDomain editingDomain, View parentView,

+			CreateViewRequest.ViewDescriptor viewDescriptor) {

+		this(editingDomain, parentView, Collections

+				.singletonList(viewDescriptor));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		for (Iterator it = myDescriptors.iterator(); it.hasNext();) {

+			CreateViewRequest.ViewDescriptor nextDescriptor = (CreateViewRequest.ViewDescriptor) it

+					.next();

+			View view = (View) nextDescriptor.getAdapter(View.class);

+			if (view != null && view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE

+						.createEAnnotation();

+				shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$

+				shortcutAnnotation.getDetails().put(

+						"modelID", CompositeRefactoringEditPart.MODEL_ID); //$NON-NLS-1$

+				view.getEAnnotations().add(shortcutAnnotation);

+			}

+		}

+		return CommandResult.newOKCommandResult();

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionCheckCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionCheckCreateCommand.java
new file mode 100644
index 0000000..c8506be
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionCheckCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionCheck;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class ConditionCheckCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionCheckCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getIf() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionCheck newElement = ComrelFactory.eINSTANCE

+				.createConditionCheck();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setIf(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionCheck newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit2CreateCommand.java
new file mode 100644
index 0000000..8a9934c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit3CreateCommand.java
new file mode 100644
index 0000000..fcc341e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit3CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnits() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnits(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit4CreateCommand.java
new file mode 100644
index 0000000..3225eec
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit4CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit5CreateCommand.java
new file mode 100644
index 0000000..0619a57
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit5CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getRefactoringUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit6CreateCommand.java
new file mode 100644
index 0000000..682a4c8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit6CreateCommand.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getThen() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setThen(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit7CreateCommand.java
new file mode 100644
index 0000000..07be1d4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnit7CreateCommand.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getElse() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setElse(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnitCreateCommand.java
new file mode 100644
index 0000000..731ffa0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ConditionalUnitCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CompositeRefactoring container = (CompositeRefactoring) getElementToEdit();

+		if (container.getMainRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ConditionalUnit newElement = ComrelFactory.eINSTANCE

+				.createConditionalUnit();

+

+		CompositeRefactoring owner = (CompositeRefactoring) getElementToEdit();

+		owner.setMainRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ConditionalUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit2CreateCommand.java
new file mode 100644
index 0000000..0417751
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit2CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFeatureHelper helper = cr.getMultiFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFeatureUnit(helper);

+		} else {

+			newElement = factory.createMultiFeatureUnit();

+		}

+		/* end of change */

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java
new file mode 100644
index 0000000..06e2969
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.MultiFeatureUnit;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFeatureHelper helper = cr.getMultiFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFeatureUnit(helper);

+		} else {

+			newElement = factory.createMultiFeatureUnit();

+		}

+		/* end of change */

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit4CreateCommand.java
new file mode 100644
index 0000000..32fcc87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit4CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFeatureHelper helper = cr.getMultiFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFeatureUnit(helper);

+		} else {

+			newElement = factory.createMultiFeatureUnit();

+		}

+		/* end of change */

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit5CreateCommand.java
new file mode 100644
index 0000000..6ac043d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit5CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFeatureHelper helper = cr.getMultiFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFeatureUnit(helper);

+		} else {

+			newElement = factory.createMultiFeatureUnit();

+		}

+		/* end of change */

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnitCreateCommand.java
new file mode 100644
index 0000000..90944b0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnitCreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFeatureHelper helper = cr.getMultiFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFeatureUnit(helper);

+		} else {

+			newElement = factory.createMultiFeatureUnit();

+		}

+		/* end of change */

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit2CreateCommand.java
new file mode 100644
index 0000000..46cffc5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit2CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFilterUnit;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFilterHelper helper = cr.getMultiFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFilterUnit(helper);

+		} else {

+			newElement = factory.createMultiFilterUnit();

+		}

+		/* end of change */

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit3CreateCommand.java
new file mode 100644
index 0000000..0955cee
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit3CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.MultiFilterUnit;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFilterHelper helper = cr.getMultiFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFilterUnit(helper);

+		} else {

+			newElement = factory.createMultiFilterUnit();

+		}

+		/* end of change */

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit4CreateCommand.java
new file mode 100644
index 0000000..9cfd34f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit4CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFilterUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFilterHelper helper = cr.getMultiFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFilterUnit(helper);

+		} else {

+			newElement = factory.createMultiFilterUnit();

+		}

+		/* end of change */

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit5CreateCommand.java
new file mode 100644
index 0000000..2c140b6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnit5CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFilterUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFilterHelper helper = cr.getMultiFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFilterUnit(helper);

+		} else {

+			newElement = factory.createMultiFilterUnit();

+		}

+		/* end of change */

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnitCreateCommand.java
new file mode 100644
index 0000000..7a8ea82
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFilterUnitCreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiFilterUnit;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.MultiFilterHelper helper = cr.getMultiFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.MultiFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createMultiFilterUnit(helper);

+		} else {

+			newElement = factory.createMultiFilterUnit();

+		}

+		/* end of change */

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort2CreateCommand.java
new file mode 100644
index 0000000..d088aaa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class MultiInputPort2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getMultiInputPorts().size() >= 2) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.getMultiInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort3CreateCommand.java
new file mode 100644
index 0000000..5b52c7c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort3CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+import comrel.SingleFeatureUnit;

+

+/**

+ * @generated

+ */

+public class MultiInputPort3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		SingleFeatureUnit owner = (SingleFeatureUnit) getElementToEdit();

+		owner.getSecondaryInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort4CreateCommand.java
new file mode 100644
index 0000000..f265336
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort4CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+import comrel.MultiInputPort;

+

+/**

+ * @generated

+ */

+public class MultiInputPort4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		MultiFeatureUnit owner = (MultiFeatureUnit) getElementToEdit();

+		owner.getSecondaryInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort5CreateCommand.java
new file mode 100644
index 0000000..b9f6f35
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort5CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+import comrel.SingleFilterUnit;

+

+/**

+ * @generated

+ */

+public class MultiInputPort5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleFilterUnit container = (SingleFilterUnit) getElementToEdit();

+		if (container.getInputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		SingleFilterUnit owner = (SingleFilterUnit) getElementToEdit();

+		owner.setInputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort6CreateCommand.java
new file mode 100644
index 0000000..d504d50
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort6CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiFilterUnit;

+import comrel.MultiInputPort;

+

+/**

+ * @generated

+ */

+public class MultiInputPort6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		MultiFilterUnit container = (MultiFilterUnit) getElementToEdit();

+		if (container.getInputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		MultiFilterUnit owner = (MultiFilterUnit) getElementToEdit();

+		owner.setInputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort7CreateCommand.java
new file mode 100644
index 0000000..f4c6dfb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort7CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class MultiInputPort7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getMultiInputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setMultiInputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort8CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort8CreateCommand.java
new file mode 100644
index 0000000..e83a845
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort8CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class MultiInputPort8CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort8CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort9CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort9CreateCommand.java
new file mode 100644
index 0000000..ffe2401
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPort9CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.MultiInputPort;

+

+/**

+ * @generated

+ */

+public class MultiInputPort9CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort9CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.getInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPortCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPortCreateCommand.java
new file mode 100644
index 0000000..2813e50
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiInputPortCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+

+/**

+ * @generated

+ */

+public class MultiInputPortCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getMultiInputPorts().size() >= 2) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiInputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiInputPort();

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.getMultiInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiOutputPort2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiOutputPort2CreateCommand.java
new file mode 100644
index 0000000..7be947d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiOutputPort2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiFilterUnit;

+import comrel.MultiOutputPort;

+

+/**

+ * @generated

+ */

+public class MultiOutputPort2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPort2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		MultiFilterUnit container = (MultiFilterUnit) getElementToEdit();

+		if (container.getOutputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiOutputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiOutputPort();

+

+		MultiFilterUnit owner = (MultiFilterUnit) getElementToEdit();

+		owner.setOutputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiOutputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiOutputPortCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiOutputPortCreateCommand.java
new file mode 100644
index 0000000..3e6dd23
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiOutputPortCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+import comrel.MultiOutputPort;

+

+/**

+ * @generated

+ */

+public class MultiOutputPortCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		MultiFeatureUnit container = (MultiFeatureUnit) getElementToEdit();

+		if (container.getOutputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		MultiOutputPort newElement = ComrelFactory.eINSTANCE

+				.createMultiOutputPort();

+

+		MultiFeatureUnit owner = (MultiFeatureUnit) getElementToEdit();

+		owner.setOutputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiOutputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiPortMappingCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiPortMappingCreateCommand.java
new file mode 100644
index 0000000..1785542
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiPortMappingCreateCommand.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiInputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class MultiPortMappingCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	private final EObject source;

+

+	/**

+	 * @generated

+	 */

+	private final EObject target;

+

+	/**

+	 * @generated

+	 */

+	private final CompositeRefactoring container;

+

+	/**

+	 * @generated

+	 */

+	public MultiPortMappingCreateCommand(CreateRelationshipRequest request,

+			EObject source, EObject target) {

+		super(request.getLabel(), null, request);

+		this.source = source;

+		this.target = target;

+		container = deduceContainer(source, target);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		if (source == null && target == null) {

+			return false;

+		}

+		if (source != null && false == source instanceof MultiPort) {

+			return false;

+		}

+		if (target != null && false == target instanceof MultiInputPort) {

+			return false;

+		}

+		if (getSource() == null) {

+			return true; // link creation is in progress; source is not defined yet

+		}

+		// target may be null here but it's possible to check constraint

+		if (getContainer() == null) {

+			return false;

+		}

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canCreateMultiPortMapping_4002(getContainer(), getSource(),

+						getTarget());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		if (!canExecute()) {

+			throw new ExecutionException(

+					"Invalid arguments in create link command"); //$NON-NLS-1$

+		}

+

+		MultiPortMapping newElement = ComrelFactory.eINSTANCE

+				.createMultiPortMapping();

+		getContainer().getPortMappings().add(newElement);

+		newElement.setSource(getSource());

+		newElement.setTarget(getTarget());

+		doConfigure(newElement, monitor, info);

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiPortMapping newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		configureRequest.setParameter(CreateRelationshipRequest.SOURCE,

+				getSource());

+		configureRequest.setParameter(CreateRelationshipRequest.TARGET,

+				getTarget());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setElementToEdit(EObject element) {

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPort getSource() {

+		return (MultiPort) source;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiInputPort getTarget() {

+		return (MultiInputPort) target;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CompositeRefactoring getContainer() {

+		return container;

+	}

+

+	/**

+	 * Default approach is to traverse ancestors of the source to find instance of container.

+	 * Modify with appropriate logic.

+	 * @generated

+	 */

+	private static CompositeRefactoring deduceContainer(EObject source,

+			EObject target) {

+		// Find container element for the new link.

+		// Climb up by containment hierarchy starting from the source

+		// and return the first element that is instance of the container class.

+		for (EObject element = source; element != null; element = element

+				.eContainer()) {

+			if (element instanceof CompositeRefactoring) {

+				return (CompositeRefactoring) element;

+			}

+		}

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiPortMappingReorientCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiPortMappingReorientCommand.java
new file mode 100644
index 0000000..e661cb1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiPortMappingReorientCommand.java
@@ -0,0 +1,170 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.MultiInputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class MultiPortMappingReorientCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	private final int reorientDirection;

+

+	/**

+	 * @generated

+	 */

+	private final EObject oldEnd;

+

+	/**

+	 * @generated

+	 */

+	private final EObject newEnd;

+

+	/**

+	 * @generated

+	 */

+	public MultiPortMappingReorientCommand(ReorientRelationshipRequest request) {

+		super(request.getLabel(), request.getRelationship(), request);

+		reorientDirection = request.getDirection();

+		oldEnd = request.getOldRelationshipEnd();

+		newEnd = request.getNewRelationshipEnd();

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		if (false == getElementToEdit() instanceof MultiPortMapping) {

+			return false;

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) {

+			return canReorientSource();

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) {

+			return canReorientTarget();

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean canReorientSource() {

+		if (!(oldEnd instanceof MultiPort && newEnd instanceof MultiPort)) {

+			return false;

+		}

+		MultiInputPort target = getLink().getTarget();

+		if (!(getLink().eContainer() instanceof CompositeRefactoring)) {

+			return false;

+		}

+		CompositeRefactoring container = (CompositeRefactoring) getLink()

+				.eContainer();

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canExistMultiPortMapping_4002(container, getLink(),

+						getNewSource(), target);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean canReorientTarget() {

+		if (!(oldEnd instanceof MultiInputPort && newEnd instanceof MultiInputPort)) {

+			return false;

+		}

+		MultiPort source = getLink().getSource();

+		if (!(getLink().eContainer() instanceof CompositeRefactoring)) {

+			return false;

+		}

+		CompositeRefactoring container = (CompositeRefactoring) getLink()

+				.eContainer();

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canExistMultiPortMapping_4002(container, getLink(), source,

+						getNewTarget());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		if (!canExecute()) {

+			throw new ExecutionException(

+					"Invalid arguments in reorient link command"); //$NON-NLS-1$

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) {

+			return reorientSource();

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) {

+			return reorientTarget();

+		}

+		throw new IllegalStateException();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult reorientSource() throws ExecutionException {

+		getLink().setSource(getNewSource());

+		return CommandResult.newOKCommandResult(getLink());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult reorientTarget() throws ExecutionException {

+		getLink().setTarget(getNewTarget());

+		return CommandResult.newOKCommandResult(getLink());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPortMapping getLink() {

+		return (MultiPortMapping) getElementToEdit();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPort getOldSource() {

+		return (MultiPort) oldEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPort getNewSource() {

+		return (MultiPort) newEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiInputPort getOldTarget() {

+		return (MultiInputPort) oldEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiInputPort getNewTarget() {

+		return (MultiInputPort) newEnd;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiSinglePortMappingCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiSinglePortMappingCreateCommand.java
new file mode 100644
index 0000000..5f8dc49
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiSinglePortMappingCreateCommand.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MultiPort;

+import comrel.MultiSinglePortMapping;

+import comrel.SingleInputPort;

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class MultiSinglePortMappingCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	private final EObject source;

+

+	/**

+	 * @generated

+	 */

+	private final EObject target;

+

+	/**

+	 * @generated

+	 */

+	private final CompositeRefactoring container;

+

+	/**

+	 * @generated

+	 */

+	public MultiSinglePortMappingCreateCommand(

+			CreateRelationshipRequest request, EObject source, EObject target) {

+		super(request.getLabel(), null, request);

+		this.source = source;

+		this.target = target;

+		container = deduceContainer(source, target);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		if (source == null && target == null) {

+			return false;

+		}

+		if (source != null && false == source instanceof MultiPort) {

+			return false;

+		}

+		if (target != null && false == target instanceof SingleInputPort) {

+			return false;

+		}

+		if (getSource() == null) {

+			return true; // link creation is in progress; source is not defined yet

+		}

+		// target may be null here but it's possible to check constraint

+		if (getContainer() == null) {

+			return false;

+		}

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canCreateMultiSinglePortMapping_4003(getContainer(),

+						getSource(), getTarget());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		if (!canExecute()) {

+			throw new ExecutionException(

+					"Invalid arguments in create link command"); //$NON-NLS-1$

+		}

+

+		MultiSinglePortMapping newElement = ComrelFactory.eINSTANCE

+				.createMultiSinglePortMapping();

+		getContainer().getPortMappings().add(newElement);

+		newElement.setSource(getSource());

+		newElement.setTarget(getTarget());

+		doConfigure(newElement, monitor, info);

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(MultiSinglePortMapping newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		configureRequest.setParameter(CreateRelationshipRequest.SOURCE,

+				getSource());

+		configureRequest.setParameter(CreateRelationshipRequest.TARGET,

+				getTarget());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setElementToEdit(EObject element) {

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPort getSource() {

+		return (MultiPort) source;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SingleInputPort getTarget() {

+		return (SingleInputPort) target;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CompositeRefactoring getContainer() {

+		return container;

+	}

+

+	/**

+	 * Default approach is to traverse ancestors of the source to find instance of container.

+	 * Modify with appropriate logic.

+	 * @generated

+	 */

+	private static CompositeRefactoring deduceContainer(EObject source,

+			EObject target) {

+		// Find container element for the new link.

+		// Climb up by containment hierarchy starting from the source

+		// and return the first element that is instance of the container class.

+		for (EObject element = source; element != null; element = element

+				.eContainer()) {

+			if (element instanceof CompositeRefactoring) {

+				return (CompositeRefactoring) element;

+			}

+		}

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiSinglePortMappingReorientCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiSinglePortMappingReorientCommand.java
new file mode 100644
index 0000000..bd86694
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiSinglePortMappingReorientCommand.java
@@ -0,0 +1,171 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.MultiPort;

+import comrel.MultiSinglePortMapping;

+import comrel.SingleInputPort;

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class MultiSinglePortMappingReorientCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	private final int reorientDirection;

+

+	/**

+	 * @generated

+	 */

+	private final EObject oldEnd;

+

+	/**

+	 * @generated

+	 */

+	private final EObject newEnd;

+

+	/**

+	 * @generated

+	 */

+	public MultiSinglePortMappingReorientCommand(

+			ReorientRelationshipRequest request) {

+		super(request.getLabel(), request.getRelationship(), request);

+		reorientDirection = request.getDirection();

+		oldEnd = request.getOldRelationshipEnd();

+		newEnd = request.getNewRelationshipEnd();

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		if (false == getElementToEdit() instanceof MultiSinglePortMapping) {

+			return false;

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) {

+			return canReorientSource();

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) {

+			return canReorientTarget();

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean canReorientSource() {

+		if (!(oldEnd instanceof MultiPort && newEnd instanceof MultiPort)) {

+			return false;

+		}

+		SingleInputPort target = getLink().getTarget();

+		if (!(getLink().eContainer() instanceof CompositeRefactoring)) {

+			return false;

+		}

+		CompositeRefactoring container = (CompositeRefactoring) getLink()

+				.eContainer();

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canExistMultiSinglePortMapping_4003(container, getLink(),

+						getNewSource(), target);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean canReorientTarget() {

+		if (!(oldEnd instanceof SingleInputPort && newEnd instanceof SingleInputPort)) {

+			return false;

+		}

+		MultiPort source = getLink().getSource();

+		if (!(getLink().eContainer() instanceof CompositeRefactoring)) {

+			return false;

+		}

+		CompositeRefactoring container = (CompositeRefactoring) getLink()

+				.eContainer();

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canExistMultiSinglePortMapping_4003(container, getLink(),

+						source, getNewTarget());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		if (!canExecute()) {

+			throw new ExecutionException(

+					"Invalid arguments in reorient link command"); //$NON-NLS-1$

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) {

+			return reorientSource();

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) {

+			return reorientTarget();

+		}

+		throw new IllegalStateException();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult reorientSource() throws ExecutionException {

+		getLink().setSource(getNewSource());

+		return CommandResult.newOKCommandResult(getLink());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult reorientTarget() throws ExecutionException {

+		getLink().setTarget(getNewTarget());

+		return CommandResult.newOKCommandResult(getLink());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiSinglePortMapping getLink() {

+		return (MultiSinglePortMapping) getElementToEdit();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPort getOldSource() {

+		return (MultiPort) oldEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MultiPort getNewSource() {

+		return (MultiPort) newEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SingleInputPort getOldTarget() {

+		return (SingleInputPort) oldEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SingleInputPort getNewTarget() {

+		return (SingleInputPort) newEnd;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit2CreateCommand.java
new file mode 100644
index 0000000..6137256
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit3CreateCommand.java
new file mode 100644
index 0000000..3db9c1e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit3CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getThen() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setThen(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit4CreateCommand.java
new file mode 100644
index 0000000..9eaac37
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit4CreateCommand.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnits() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnits(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit5CreateCommand.java
new file mode 100644
index 0000000..25e8263
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit5CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit6CreateCommand.java
new file mode 100644
index 0000000..94ab2fd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit6CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getRefactoringUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit7CreateCommand.java
new file mode 100644
index 0000000..7744b8a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnit7CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getElse() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setElse(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnitCreateCommand.java
new file mode 100644
index 0000000..0409a2e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/ParallelQueuedUnitCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CompositeRefactoring container = (CompositeRefactoring) getElementToEdit();

+		if (container.getMainRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		ParallelQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createParallelQueuedUnit();

+		newElement.init();

+		CompositeRefactoring owner = (CompositeRefactoring) getElementToEdit();

+		owner.setMainRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(ParallelQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit2CreateCommand.java
new file mode 100644
index 0000000..2fea1d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit3CreateCommand.java
new file mode 100644
index 0000000..525889c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit3CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnits() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnits(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit4CreateCommand.java
new file mode 100644
index 0000000..7aaa287
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit4CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit5CreateCommand.java
new file mode 100644
index 0000000..a403d49
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit5CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getThen() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setThen(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit6CreateCommand.java
new file mode 100644
index 0000000..3a1f3e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit6CreateCommand.java
@@ -0,0 +1,91 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnit6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getRefactoringUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit7CreateCommand.java
new file mode 100644
index 0000000..14cd78b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnit7CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnit7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getElse() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setElse(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnitCreateCommand.java
new file mode 100644
index 0000000..024b33e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SequentialUnitCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+

+/**

+ * @generated

+ */

+public class SequentialUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CompositeRefactoring container = (CompositeRefactoring) getElementToEdit();

+		if (container.getMainRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SequentialUnit newElement = ComrelFactory.eINSTANCE

+				.createSequentialUnit();

+

+		CompositeRefactoring owner = (CompositeRefactoring) getElementToEdit();

+		owner.setMainRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SequentialUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit2CreateCommand.java
new file mode 100644
index 0000000..1343097
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit2CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SingleFeatureUnit;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFeatureHelper helper = cr.getSingleFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFeatureUnit(helper);

+		} else {

+			newElement = factory.createSingleFeatureUnit();

+		}

+		/* end of change */

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit3CreateCommand.java
new file mode 100644
index 0000000..408ac4b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit3CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SingleFeatureUnit;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFeatureHelper helper = cr.getSingleFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFeatureUnit(helper);

+		} else {

+			newElement = factory.createSingleFeatureUnit();

+		}

+		/* end of change */

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit4CreateCommand.java
new file mode 100644
index 0000000..0a67a30
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit4CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleFeatureUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFeatureHelper helper = cr.getSingleFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFeatureUnit(helper);

+		} else {

+			newElement = factory.createSingleFeatureUnit();

+		}

+		/* end of change */

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit5CreateCommand.java
new file mode 100644
index 0000000..42dfc3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnit5CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+import comrel.SingleFeatureUnit;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFeatureHelper helper = cr.getSingleFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFeatureUnit(helper);

+		} else {

+			newElement = factory.createSingleFeatureUnit();

+		}

+		/* end of change */

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnitCreateCommand.java
new file mode 100644
index 0000000..053a886
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFeatureUnitCreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleFeatureUnit;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFeatureHelper helper = cr.getSingleFeatureHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFeatureUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFeatureUnit(helper);

+		} else {

+			newElement = factory.createSingleFeatureUnit();

+		}

+		/* end of change */

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFeatureUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit2CreateCommand.java
new file mode 100644
index 0000000..45d18ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit2CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SingleFilterUnit;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFilterHelper helper = cr.getSingleFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFilterUnit(helper);

+		} else {

+			newElement = factory.createSingleFilterUnit();

+		}

+		/* end of change */

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit3CreateCommand.java
new file mode 100644
index 0000000..526991d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit3CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SingleFilterUnit;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFilterHelper helper = cr.getSingleFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFilterUnit(helper);

+		} else {

+			newElement = factory.createSingleFilterUnit();

+		}

+		/* end of change */

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit4CreateCommand.java
new file mode 100644
index 0000000..ea75103
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit4CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleFilterUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFilterHelper helper = cr.getSingleFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFilterUnit(helper);

+		} else {

+			newElement = factory.createSingleFilterUnit();

+		}

+		/* end of change */

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit5CreateCommand.java
new file mode 100644
index 0000000..02d9a08
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnit5CreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+import comrel.SingleFilterUnit;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFilterHelper helper = cr.getSingleFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFilterUnit(helper);

+		} else {

+			newElement = factory.createSingleFilterUnit();

+		}

+		/* end of change */

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnitCreateCommand.java
new file mode 100644
index 0000000..9a6549d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleFilterUnitCreateCommand.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleFilterUnit;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		/*

+		 * changes: Liest aus einem Request die ID des Helpers und

+		 * erstellt anhand dessen die HelperUnit

+		 */

+		CreateElementRequest request = ((CreateElementRequest) getRequest());

+		String helperId = (String) request.getParameters().get(

+				comrel.diagram.part.ComrelPaletteFactory.UNIT_ID);

+		comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE;

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring cr = (CompositeRefactoring) container;

+		comrel.SingleFilterHelper helper = cr.getSingleFilterHelper(helperId);

+		if (helper != null && !cr.getHelper().contains(helper)) {

+			cr.getHelper().add(helper);

+		}

+		comrel.SingleFilterUnit newElement;

+		if (helper != null) {

+			newElement = factory.createSingleFilterUnit(helper);

+		} else {

+			newElement = factory.createSingleFilterUnit();

+		}

+		/* end of change */

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.getHelperUnits().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleFilterUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort2CreateCommand.java
new file mode 100644
index 0000000..9ba7626
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort2CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.getSingleInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort3CreateCommand.java
new file mode 100644
index 0000000..68286ec
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort3CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.getSingleInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort4CreateCommand.java
new file mode 100644
index 0000000..e27d1d0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort4CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SingleFeatureUnit;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleFeatureUnit container = (SingleFeatureUnit) getElementToEdit();

+		if (container.getInputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		SingleFeatureUnit owner = (SingleFeatureUnit) getElementToEdit();

+		owner.setInputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort5CreateCommand.java
new file mode 100644
index 0000000..1965ac6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort5CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.MultiFeatureUnit;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		MultiFeatureUnit container = (MultiFeatureUnit) getElementToEdit();

+		if (container.getInputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		MultiFeatureUnit owner = (MultiFeatureUnit) getElementToEdit();

+		owner.setInputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort6CreateCommand.java
new file mode 100644
index 0000000..2acb57a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort6CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SingleInputPort;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleInputPort6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.getSingleInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort7CreateCommand.java
new file mode 100644
index 0000000..ba6e5ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort7CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort8CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort8CreateCommand.java
new file mode 100644
index 0000000..5798cc8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort8CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort8CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort8CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.getInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort9CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort9CreateCommand.java
new file mode 100644
index 0000000..e9b8755
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPort9CreateCommand.java
@@ -0,0 +1,102 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.ComrelFactory;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPort9CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort9CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		AtomicUnit owner = (AtomicUnit) getElementToEdit();

+		/*

+		 * Begin Changes: Only the AtomicRefactoirngInputPorts are alloweded

+		 */

+		if (owner.getInputPorts().size() != owner.getModelRefactoring()

+				.getInputPorts().size()) {

+			SingleInputPort newElement = ComrelFactory.eINSTANCE

+					.createSingleInputPort();

+

+			owner.getInputPorts().add(newElement);

+

+			doConfigure(newElement, monitor, info);

+

+			((CreateElementRequest) getRequest()).setNewElement(newElement);

+			return CommandResult.newOKCommandResult(newElement);

+		}

+		return CommandResult.newCancelledCommandResult();

+		/*

+		 * End Changes!

+		 */

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPortCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPortCreateCommand.java
new file mode 100644
index 0000000..0e66242
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleInputPortCreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ModelRefactoring;

+import comrel.SingleInputPort;

+

+/**

+ * @generated

+ */

+public class SingleInputPortCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleInputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleInputPort();

+

+		ModelRefactoring owner = (ModelRefactoring) getElementToEdit();

+		owner.getInputPorts().add(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleInputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleOutputPort2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleOutputPort2CreateCommand.java
new file mode 100644
index 0000000..0732846
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleOutputPort2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SingleFilterUnit;

+import comrel.SingleOutputPort;

+

+/**

+ * @generated

+ */

+public class SingleOutputPort2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPort2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleFilterUnit container = (SingleFilterUnit) getElementToEdit();

+		if (container.getOutputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleOutputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleOutputPort();

+

+		SingleFilterUnit owner = (SingleFilterUnit) getElementToEdit();

+		owner.setOutputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleOutputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleOutputPortCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleOutputPortCreateCommand.java
new file mode 100644
index 0000000..f44d4e0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleOutputPortCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SingleFeatureUnit;

+import comrel.SingleOutputPort;

+

+/**

+ * @generated

+ */

+public class SingleOutputPortCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleFeatureUnit container = (SingleFeatureUnit) getElementToEdit();

+		if (container.getOutputPort() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleOutputPort newElement = ComrelFactory.eINSTANCE

+				.createSingleOutputPort();

+

+		SingleFeatureUnit owner = (SingleFeatureUnit) getElementToEdit();

+		owner.setOutputPort(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleOutputPort newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SinglePortMappingCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SinglePortMappingCreateCommand.java
new file mode 100644
index 0000000..2cfe773
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SinglePortMappingCreateCommand.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleInputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class SinglePortMappingCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	private final EObject source;

+

+	/**

+	 * @generated

+	 */

+	private final EObject target;

+

+	/**

+	 * @generated

+	 */

+	private final CompositeRefactoring container;

+

+	/**

+	 * @generated

+	 */

+	public SinglePortMappingCreateCommand(CreateRelationshipRequest request,

+			EObject source, EObject target) {

+		super(request.getLabel(), null, request);

+		this.source = source;

+		this.target = target;

+		container = deduceContainer(source, target);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		if (source == null && target == null) {

+			return false;

+		}

+		if (source != null && false == source instanceof SinglePort) {

+			return false;

+		}

+		if (target != null && false == target instanceof SingleInputPort) {

+			return false;

+		}

+		if (getSource() == null) {

+			return true; // link creation is in progress; source is not defined yet

+		}

+		// target may be null here but it's possible to check constraint

+		if (getContainer() == null) {

+			return false;

+		}

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canCreateSinglePortMapping_4001(getContainer(), getSource(),

+						getTarget());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		if (!canExecute()) {

+			throw new ExecutionException(

+					"Invalid arguments in create link command"); //$NON-NLS-1$

+		}

+

+		SinglePortMapping newElement = ComrelFactory.eINSTANCE

+				.createSinglePortMapping();

+		getContainer().getPortMappings().add(newElement);

+		newElement.setSource(getSource());

+		newElement.setTarget(getTarget());

+		doConfigure(newElement, monitor, info);

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SinglePortMapping newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		configureRequest.setParameter(CreateRelationshipRequest.SOURCE,

+				getSource());

+		configureRequest.setParameter(CreateRelationshipRequest.TARGET,

+				getTarget());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setElementToEdit(EObject element) {

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SinglePort getSource() {

+		return (SinglePort) source;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SingleInputPort getTarget() {

+		return (SingleInputPort) target;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CompositeRefactoring getContainer() {

+		return container;

+	}

+

+	/**

+	 * Default approach is to traverse ancestors of the source to find instance of container.

+	 * Modify with appropriate logic.

+	 * @generated

+	 */

+	private static CompositeRefactoring deduceContainer(EObject source,

+			EObject target) {

+		// Find container element for the new link.

+		// Climb up by containment hierarchy starting from the source

+		// and return the first element that is instance of the container class.

+		for (EObject element = source; element != null; element = element

+				.eContainer()) {

+			if (element instanceof CompositeRefactoring) {

+				return (CompositeRefactoring) element;

+			}

+		}

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SinglePortMappingReorientCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SinglePortMappingReorientCommand.java
new file mode 100644
index 0000000..c7a3afb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SinglePortMappingReorientCommand.java
@@ -0,0 +1,170 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.SingleInputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class SinglePortMappingReorientCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	private final int reorientDirection;

+

+	/**

+	 * @generated

+	 */

+	private final EObject oldEnd;

+

+	/**

+	 * @generated

+	 */

+	private final EObject newEnd;

+

+	/**

+	 * @generated

+	 */

+	public SinglePortMappingReorientCommand(ReorientRelationshipRequest request) {

+		super(request.getLabel(), request.getRelationship(), request);

+		reorientDirection = request.getDirection();

+		oldEnd = request.getOldRelationshipEnd();

+		newEnd = request.getNewRelationshipEnd();

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		if (false == getElementToEdit() instanceof SinglePortMapping) {

+			return false;

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) {

+			return canReorientSource();

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) {

+			return canReorientTarget();

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean canReorientSource() {

+		if (!(oldEnd instanceof SinglePort && newEnd instanceof SinglePort)) {

+			return false;

+		}

+		SingleInputPort target = getLink().getTarget();

+		if (!(getLink().eContainer() instanceof CompositeRefactoring)) {

+			return false;

+		}

+		CompositeRefactoring container = (CompositeRefactoring) getLink()

+				.eContainer();

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canExistSinglePortMapping_4001(container, getLink(),

+						getNewSource(), target);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean canReorientTarget() {

+		if (!(oldEnd instanceof SingleInputPort && newEnd instanceof SingleInputPort)) {

+			return false;

+		}

+		SinglePort source = getLink().getSource();

+		if (!(getLink().eContainer() instanceof CompositeRefactoring)) {

+			return false;

+		}

+		CompositeRefactoring container = (CompositeRefactoring) getLink()

+				.eContainer();

+		return ComrelBaseItemSemanticEditPolicy.getLinkConstraints()

+				.canExistSinglePortMapping_4001(container, getLink(), source,

+						getNewTarget());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		if (!canExecute()) {

+			throw new ExecutionException(

+					"Invalid arguments in reorient link command"); //$NON-NLS-1$

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) {

+			return reorientSource();

+		}

+		if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) {

+			return reorientTarget();

+		}

+		throw new IllegalStateException();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult reorientSource() throws ExecutionException {

+		getLink().setSource(getNewSource());

+		return CommandResult.newOKCommandResult(getLink());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult reorientTarget() throws ExecutionException {

+		getLink().setTarget(getNewTarget());

+		return CommandResult.newOKCommandResult(getLink());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SinglePortMapping getLink() {

+		return (SinglePortMapping) getElementToEdit();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SinglePort getOldSource() {

+		return (SinglePort) oldEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SinglePort getNewSource() {

+		return (SinglePort) newEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SingleInputPort getOldTarget() {

+		return (SingleInputPort) oldEnd;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected SingleInputPort getNewTarget() {

+		return (SingleInputPort) newEnd;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit2CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit2CreateCommand.java
new file mode 100644
index 0000000..592be49
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit2CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit2CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit2CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CartesianQueuedUnit container = (CartesianQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		CartesianQueuedUnit owner = (CartesianQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit3CreateCommand.java
new file mode 100644
index 0000000..c198260
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit3CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ParallelQueuedUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit3CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit3CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ParallelQueuedUnit container = (ParallelQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnits() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		ParallelQueuedUnit owner = (ParallelQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnits(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit4CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit4CreateCommand.java
new file mode 100644
index 0000000..9de9e9b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit4CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit4CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit4CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getThen() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setThen(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit5CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit5CreateCommand.java
new file mode 100644
index 0000000..adfc0ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit5CreateCommand.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit5CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit5CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		SingleQueuedUnit container = (SingleQueuedUnit) getElementToEdit();

+		if (container.getRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		SingleQueuedUnit owner = (SingleQueuedUnit) getElementToEdit();

+		owner.setRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit6CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit6CreateCommand.java
new file mode 100644
index 0000000..9616b65
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit6CreateCommand.java
@@ -0,0 +1,92 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.SequentialUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit6CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit6CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		return true;

+

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		SequentialUnit owner = (SequentialUnit) getElementToEdit();

+		owner.getRefactoringUnits().add(newElement);

+		owner.updateSeqExecutionOrder();

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit7CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit7CreateCommand.java
new file mode 100644
index 0000000..5d12361
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnit7CreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelFactory;

+import comrel.ConditionalUnit;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit7CreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit7CreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		ConditionalUnit container = (ConditionalUnit) getElementToEdit();

+		if (container.getElse() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		ConditionalUnit owner = (ConditionalUnit) getElementToEdit();

+		owner.setElse(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnitCreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnitCreateCommand.java
new file mode 100644
index 0000000..f311bac
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/SingleQueuedUnitCreateCommand.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.commands;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.SingleQueuedUnit;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitCreateCommand extends EditElementCommand {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitCreateCommand(CreateElementRequest req) {

+		super(req.getLabel(), null, req);

+	}

+

+	/**

+	 * FIXME: replace with setElementToEdit()

+	 * @generated

+	 */

+	protected EObject getElementToEdit() {

+		EObject container = ((CreateElementRequest) getRequest())

+				.getContainer();

+		if (container instanceof View) {

+			container = ((View) container).getElement();

+		}

+		return container;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean canExecute() {

+		CompositeRefactoring container = (CompositeRefactoring) getElementToEdit();

+		if (container.getMainRefactoringUnit() != null) {

+			return false;

+		}

+		return true;

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		SingleQueuedUnit newElement = ComrelFactory.eINSTANCE

+				.createSingleQueuedUnit();

+

+		CompositeRefactoring owner = (CompositeRefactoring) getElementToEdit();

+		owner.setMainRefactoringUnit(newElement);

+

+		doConfigure(newElement, monitor, info);

+

+		((CreateElementRequest) getRequest()).setNewElement(newElement);

+		return CommandResult.newOKCommandResult(newElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doConfigure(SingleQueuedUnit newElement,

+			IProgressMonitor monitor, IAdaptable info)

+			throws ExecutionException {

+		IElementType elementType = ((CreateElementRequest) getRequest())

+				.getElementType();

+		ConfigureRequest configureRequest = new ConfigureRequest(

+				getEditingDomain(), newElement, elementType);

+		configureRequest.setClientContext(((CreateElementRequest) getRequest())

+				.getClientContext());

+		configureRequest.addParameters(getRequest().getParameters());

+		ICommand configureCommand = elementType

+				.getEditCommand(configureRequest);

+		if (configureCommand != null && configureCommand.canExecute()) {

+			configureCommand.execute(monitor, info);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/custom/CustomDestroyElementCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/custom/CustomDestroyElementCommand.java
new file mode 100644
index 0000000..87b9b3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/custom/CustomDestroyElementCommand.java
@@ -0,0 +1,146 @@
+/**

+ * 

+ */

+package comrel.diagram.edit.commands.custom;

+

+import java.util.ArrayList;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.ModelRefactoring;

+import comrel.MultiPortMapping;

+import comrel.MultiSinglePortMapping;

+import comrel.Port;

+import comrel.PortMapping;

+import comrel.SinglePortMapping;

+import comrel.util.ComrelUtil;

+

+/**

+ * @author Gerrit

+ * Selbstdefiniertes DestroyElementCommand, um eventuell bestimmte 

+ * Dinge noch zu machen, bevor das Element zerstört wird.

+ */

+public class CustomDestroyElementCommand extends DestroyElementCommand {

+

+	boolean condition = true;

+	ModelRefactoring ref= null;

+	Port p = null;

+	Helper helper= null;

+	EObject container = null;

+	

+	

+	public CustomDestroyElementCommand(DestroyElementRequest request,boolean condition) {

+		super(request);

+		this.condition = condition;

+		this.container = request.getContainer();

+	}

+	

+	public CustomDestroyElementCommand(DestroyElementRequest request,Port port, boolean condition) {

+		super(request);

+		this.condition = condition;

+		this.container = request.getContainer();

+		this.p=port;

+	}

+	

+	public CustomDestroyElementCommand(DestroyElementRequest request,ModelRefactoring ref) {

+		super(request);

+		this.ref=ref;

+		this.container = request.getContainer();

+	}

+	

+	public CustomDestroyElementCommand(DestroyElementRequest request,Helper helper) {

+		super(request);

+		this.helper = helper;

+		this.container = request.getContainer();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand#canExecute()

+	 */

+	@Override

+	public boolean canExecute() {

+		return condition;

+	}

+

+	@Override

+	protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+			IAdaptable info) throws ExecutionException {

+		

+		CommandResult result = super.doExecuteWithResult(monitor, info);

+		CompositeRefactoring cr = (CompositeRefactoring)ComrelUtil.getContainedCompositeRefactoring(container);

+		ArrayList<PortMapping> mappings = new ArrayList<PortMapping>();

+		ArrayList<Port> ports = new ArrayList<Port>();

+		if(ref != null) {

+			AtomicUnit context = (AtomicUnit) getElementToDestroy();

+			ports.addAll(context.getInputPorts());

+			for(PortMapping m : cr.getPortMappings()) {

+				if(ports.contains(m.getSource()) || ports.contains(m.getTarget())) {

+					setSourceTargetNull(m);

+					mappings.add(m);

+				}

+			}

+			cr.getPortMappings().removeAll(mappings);

+			cr.getModelRefactorings().remove(ref);

+		}

+		if(helper != null) {

+			HelperUnit context = (HelperUnit) getElementToDestroy();

+			ports.add(context.getInputPort());

+			ports.add(context.getOutputPort());

+			for(PortMapping m : cr.getPortMappings()) {

+				if(ports.contains(m.getSource()) || ports.contains(m.getTarget())) {

+					setSourceTargetNull(m);

+					mappings.add(m);

+				}

+			}

+			cr.getPortMappings().removeAll(mappings);

+			cr.getHelper().remove(helper);

+		}

+		if(p != null) {

+			for(PortMapping m : cr.getPortMappings()) {

+				if(ports == m.getSource() || p == m.getTarget()) {

+					setSourceTargetNull(m);

+					mappings.add(m);

+				}

+			}

+			cr.getPortMappings().removeAll(mappings);

+		}

+		

+		cr.removeUnusedModelRefactorings();

+		cr.removeUnusedHelper();

+

+		

+		return result;

+	}

+	

+	private void setSourceTargetNull(PortMapping mapping) {

+		

+		if (mapping instanceof SinglePortMapping) {

+			SinglePortMapping m = (SinglePortMapping) mapping;

+			m.setSource(null);

+			m.setTarget(null);

+		}

+		if (mapping instanceof MultiPortMapping) {

+			MultiPortMapping m = (MultiPortMapping) mapping;

+			m.setSource(null);

+			m.setTarget(null);

+		}

+		if (mapping instanceof MultiSinglePortMapping) {

+			MultiSinglePortMapping m = (MultiSinglePortMapping) mapping;

+			m.setSource(null);

+			m.setTarget(null);

+		}

+	}

+	

+	

+	

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/AtomicUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/AtomicUnitEditHelper.java
new file mode 100644
index 0000000..f680c70
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/AtomicUnitEditHelper.java
@@ -0,0 +1,42 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ModelRefactoring;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class AtomicUnitEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		if (req.getElementToDestroy() instanceof AtomicUnit) {

+			AtomicUnit context = (AtomicUnit) req.getElementToDestroy();

+			System.out.println("AtomicUnit: " + context);

+			ModelRefactoring modelRefactoring = context.getModelRefactoring();

+			System.out.println("ModelRefactoring: " + modelRefactoring);

+			CompositeRefactoring cr = (CompositeRefactoring) modelRefactoring

+					.eContainer();

+			System.out.println("CompositeRefactoring: " + cr);

+			if (cr != null) {

+				System.out.println("in use?: " + cr.modelRefactoringInUse(modelRefactoring, context));

+				if (!cr.modelRefactoringInUse(modelRefactoring, context)) {

+					System.out.println("return: new CustomDestroyElementCommand");

+					return new CustomDestroyElementCommand(req,

+							modelRefactoring);

+				}

+			}

+		}

+		System.out.println("return: super call");

+		return super.getDestroyElementCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/CartesianQueuedUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/CartesianQueuedUnitEditHelper.java
new file mode 100644
index 0000000..fa4acfc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/CartesianQueuedUnitEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/CompositeRefactoringEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/CompositeRefactoringEditHelper.java
new file mode 100644
index 0000000..34bb262
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/CompositeRefactoringEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class CompositeRefactoringEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ComrelBaseEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ComrelBaseEditHelper.java
new file mode 100644
index 0000000..8ac361c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ComrelBaseEditHelper.java
@@ -0,0 +1,128 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelper;

+import org.eclipse.gmf.runtime.emf.type.core.edithelper.IEditHelperAdvice;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.Port;

+import comrel.util.ComrelUtil;

+

+/**

+ * @generated

+ */

+public class ComrelBaseEditHelper extends AbstractEditHelper {

+

+	/**

+	 * @generated

+	 */

+	public static final String EDIT_POLICY_COMMAND = "edit policy command"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public static final String CONTEXT_ELEMENT_TYPE = "context element type"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	protected IEditHelperAdvice[] getEditHelperAdvice(IEditCommandRequest req) {

+		if (req.getParameter(CONTEXT_ELEMENT_TYPE) instanceof IElementType) {

+			return ElementTypeRegistry.getInstance().getEditHelperAdvice(

+					(IElementType) req.getParameter(CONTEXT_ELEMENT_TYPE));

+		}

+		return super.getEditHelperAdvice(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ICommand getInsteadCommand(IEditCommandRequest req) {

+		ICommand epCommand = (ICommand) req.getParameter(EDIT_POLICY_COMMAND);

+		req.setParameter(EDIT_POLICY_COMMAND, null);

+		ICommand ehCommand = super.getInsteadCommand(req);

+		if (epCommand == null) {

+			return ehCommand;

+		}

+		if (ehCommand == null) {

+			return epCommand;

+		}

+		CompositeCommand command = new CompositeCommand(null);

+		command.add(epCommand);

+		command.add(ehCommand);

+		return command;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected ICommand getCreateCommand(CreateElementRequest req) {

+		CompositeRefactoring cr = ComrelUtil

+				.getContainedCompositeRefactoring(req.getContainer());

+		if (cr != null) {

+			cr.updateVisualization();

+		}

+		return null;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected ICommand getCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		CompositeRefactoring cr = ComrelUtil

+				.getContainedCompositeRefactoring(req.getContainer());

+		if (cr != null) {

+			cr.updateVisualization();

+		}

+		return null;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		if (req.getElementToDestroy() instanceof Port) {

+			return EditHelperUtil.getPortDestroy(req);

+		}

+		CompositeRefactoring cr = ComrelUtil

+				.getContainedCompositeRefactoring(req.getContainer());

+		if (cr != null) {

+			cr.updateVisualization();

+		}

+		return null;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected ICommand getDestroyReferenceCommand(DestroyReferenceRequest req) {

+		CompositeRefactoring cr = ComrelUtil

+				.getContainedCompositeRefactoring(req.getContainer());

+		if (cr != null) {

+			cr.updateVisualization();

+		}

+		return null;

+	}

+

+	@Override

+	public void initializeDefaultFeature(CreateElementRequest req) {

+		CompositeRefactoring cr = ComrelUtil

+				.getContainedCompositeRefactoring(req.getContainer());

+		if (cr != null) {

+			cr.updateVisualization();

+		}

+		super.initializeDefaultFeature(req);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ConditionCheckEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ConditionCheckEditHelper.java
new file mode 100644
index 0000000..5c656a2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ConditionCheckEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class ConditionCheckEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ConditionalUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ConditionalUnitEditHelper.java
new file mode 100644
index 0000000..1d1f5a6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ConditionalUnitEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/EditHelperUtil.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/EditHelperUtil.java
new file mode 100644
index 0000000..2223dbd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/EditHelperUtil.java
@@ -0,0 +1,36 @@
+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+

+public class EditHelperUtil {

+

+	

+	public static ICommand getPortDestroy(DestroyElementRequest req) {

+		ComrelBaseEditHelper h;

+		if(req.getElementToDestroy() instanceof SingleInputPort){

+			h = new SingleInputPortEditHelper();

+			System.out.println("in: getPortDestroy(DestroyElementRequest req)");

+			return h.getDestroyElementCommand(req);

+		}

+		if(req.getElementToDestroy() instanceof SingleOutputPort){

+			h = new SingleOutputPortEditHelper();

+			return h.getDestroyElementCommand(req);

+		}

+		if(req.getElementToDestroy() instanceof MultiInputPort){

+			h = new MultiInputPortEditHelper();

+			return h.getDestroyElementCommand(req);

+		}

+		if(req.getElementToDestroy() instanceof MultiOutputPort){

+			h = new MultiOutputPortEditHelper();

+			return h.getDestroyElementCommand(req);

+		}

+		return null;

+		

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiFeatureUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiFeatureUnitEditHelper.java
new file mode 100644
index 0000000..015d33f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiFeatureUnitEditHelper.java
@@ -0,0 +1,37 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.MultiFeatureUnit;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		if (req.getElementToDestroy() instanceof HelperUnit) {

+			HelperUnit context = (HelperUnit) req.getElementToDestroy();

+			Helper helper = ((MultiFeatureUnit) context)

+					.getMultiFeatureHelper();

+			CompositeRefactoring cr = (CompositeRefactoring) helper

+					.eContainer();

+			if (cr != null) {

+				if (!cr.helperInUse(helper, context)) {

+					return new CustomDestroyElementCommand(req, helper);

+				}

+			}

+		}

+		return super.getDestroyElementCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiFilterUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiFilterUnitEditHelper.java
new file mode 100644
index 0000000..b7e54d6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiFilterUnitEditHelper.java
@@ -0,0 +1,36 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.MultiFilterUnit;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		if (req.getElementToDestroy() instanceof HelperUnit) {

+			HelperUnit context = (HelperUnit) req.getElementToDestroy();

+			Helper helper = ((MultiFilterUnit) context).getMultiFilterHelper();

+			CompositeRefactoring refSys = (CompositeRefactoring) helper

+					.eContainer();

+			if (refSys != null) {

+				if (!refSys.helperInUse(helper, context)) {

+					return new CustomDestroyElementCommand(req, helper);

+				}

+			}

+		}

+		return super.getDestroyElementCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiInputPortEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiInputPortEditHelper.java
new file mode 100644
index 0000000..cd5bbff
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiInputPortEditHelper.java
@@ -0,0 +1,30 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.FilterUnit;

+import comrel.Port;

+import comrel.QueuedUnit;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class MultiInputPortEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		EObject container = req.getElementToDestroy().eContainer();

+		boolean condition = !(container instanceof QueuedUnit)

+				|| container == null;

+		condition &= !(container instanceof FilterUnit);

+		return new CustomDestroyElementCommand(req,

+				(Port) req.getElementToDestroy(), condition);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiOutputPortEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiOutputPortEditHelper.java
new file mode 100644
index 0000000..dc49883
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiOutputPortEditHelper.java
@@ -0,0 +1,28 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.HelperUnit;

+import comrel.Port;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class MultiOutputPortEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		EObject container = req.getElementToDestroy().eContainer();

+		boolean condition = !(container instanceof HelperUnit)

+				|| container == null;

+		return new CustomDestroyElementCommand(req,

+				(Port) req.getElementToDestroy(), condition);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiPortMappingEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiPortMappingEditHelper.java
new file mode 100644
index 0000000..96a8181
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiPortMappingEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class MultiPortMappingEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiSinglePortMappingEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiSinglePortMappingEditHelper.java
new file mode 100644
index 0000000..790fa08
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/MultiSinglePortMappingEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class MultiSinglePortMappingEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ParallelQueuedUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ParallelQueuedUnitEditHelper.java
new file mode 100644
index 0000000..8b5f29c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/ParallelQueuedUnitEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SequentialUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SequentialUnitEditHelper.java
new file mode 100644
index 0000000..6f7cbc5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SequentialUnitEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class SequentialUnitEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleFeatureUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleFeatureUnitEditHelper.java
new file mode 100644
index 0000000..91168b2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleFeatureUnitEditHelper.java
@@ -0,0 +1,37 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.SingleFeatureUnit;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		if (req.getElementToDestroy() instanceof HelperUnit) {

+			HelperUnit context = (HelperUnit) req.getElementToDestroy();

+			Helper helper = ((SingleFeatureUnit) context)

+					.getSingleFeatureHelper();

+			CompositeRefactoring cr = (CompositeRefactoring) helper

+					.eContainer();

+			if (cr != null) {

+				if (!cr.helperInUse(helper, context)) {

+					return new CustomDestroyElementCommand(req, helper);

+				}

+			}

+		}

+		return super.getDestroyElementCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleFilterUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleFilterUnitEditHelper.java
new file mode 100644
index 0000000..147818a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleFilterUnitEditHelper.java
@@ -0,0 +1,37 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.CompositeRefactoring;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.SingleFilterUnit;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		if (req.getElementToDestroy() instanceof HelperUnit) {

+			HelperUnit context = (HelperUnit) req.getElementToDestroy();

+			Helper helper = ((SingleFilterUnit) context)

+					.getSingleFilterHelper();

+			CompositeRefactoring cr = (CompositeRefactoring) helper

+					.eContainer();

+			if (cr != null) {

+				if (!cr.helperInUse(helper, context)) {

+					return new CustomDestroyElementCommand(req, helper);

+				}

+			}

+		}

+		return super.getDestroyElementCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleInputPortEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleInputPortEditHelper.java
new file mode 100644
index 0000000..dc4de99
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleInputPortEditHelper.java
@@ -0,0 +1,30 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.AtomicUnit;

+import comrel.HelperUnit;

+import comrel.Port;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class SingleInputPortEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		EObject container = req.getElementToDestroy().eContainer();

+		boolean condition = !(container instanceof AtomicUnit)

+				|| container == null;

+		condition &= !(container instanceof HelperUnit);

+		return new CustomDestroyElementCommand(req,

+				(Port) req.getElementToDestroy(), condition);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleOutputPortEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleOutputPortEditHelper.java
new file mode 100644
index 0000000..99cd151
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleOutputPortEditHelper.java
@@ -0,0 +1,28 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.HelperUnit;

+import comrel.Port;

+import comrel.diagram.edit.commands.custom.CustomDestroyElementCommand;

+

+/**

+ * @generated

+ */

+public class SingleOutputPortEditHelper extends ComrelBaseEditHelper {

+

+	@Override

+	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {

+		EObject container = req.getElementToDestroy().eContainer();

+		boolean condition = !(container instanceof HelperUnit)

+				|| container == null;

+		return new CustomDestroyElementCommand(req,

+				(Port) req.getElementToDestroy(), condition);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SinglePortMappingEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SinglePortMappingEditHelper.java
new file mode 100644
index 0000000..d5eed52
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SinglePortMappingEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class SinglePortMappingEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleQueuedUnitEditHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleQueuedUnitEditHelper.java
new file mode 100644
index 0000000..5a9c885
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/helpers/SingleQueuedUnitEditHelper.java
@@ -0,0 +1,10 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.helpers;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitEditHelper extends ComrelBaseEditHelper {

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit2EditPart.java
new file mode 100644
index 0000000..a1d6e9c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit2EditPart.java
@@ -0,0 +1,334 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.AtomicUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3034;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new AtomicUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType2EditPart) {

+			((AtomicUnitLabelType2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit3EditPart.java
new file mode 100644
index 0000000..6a05b37
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit3EditPart.java
@@ -0,0 +1,334 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.AtomicUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3049;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new AtomicUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType3EditPart) {

+			((AtomicUnitLabelType3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit4EditPart.java
new file mode 100644
index 0000000..e000c37
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit4EditPart.java
@@ -0,0 +1,334 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.AtomicUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3068;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new AtomicUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType4EditPart) {

+			((AtomicUnitLabelType4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit5EditPart.java
new file mode 100644
index 0000000..6c285a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit5EditPart.java
@@ -0,0 +1,334 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.AtomicUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3074;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new AtomicUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType5EditPart) {

+			((AtomicUnitLabelType5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit6EditPart.java
new file mode 100644
index 0000000..50914fb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit6EditPart.java
@@ -0,0 +1,334 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.AtomicUnit6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnit6ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit6EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3077;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnit6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnit6CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new AtomicUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType6EditPart) {

+			((AtomicUnitLabelType6EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType6EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelType6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit7EditPart.java
new file mode 100644
index 0000000..cf60afc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnit7EditPart.java
@@ -0,0 +1,338 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.policies.AtomicUnit7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnit7ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit7EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3078;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnit7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnit7CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		AtomicUnitFigure figure = new AtomicUnitFigure();

+		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType7EditPart) {

+			((AtomicUnitLabelType7EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelType7EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelType7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitEditPart.java
new file mode 100644
index 0000000..7b5d7cf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitEditPart.java
@@ -0,0 +1,349 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.AtomicUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.AtomicUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2007;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new AtomicUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new AtomicUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new AtomicUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitFigure getPrimaryShape() {

+		return (AtomicUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelTypeEditPart) {

+			((AtomicUnitLabelTypeEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureAtomicUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof AtomicUnitLabelTypeEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort9EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(AtomicUnitLabelTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public class AtomicUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureAtomicUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public AtomicUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureAtomicUnitLabelFigure = new WrappingLabel();

+			fFigureAtomicUnitLabelFigure.setText("AtomicUnit");

+

+			this.add(fFigureAtomicUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureAtomicUnitLabelFigure() {

+			return fFigureAtomicUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType2EditPart.java
new file mode 100644
index 0000000..03798ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelType2EditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5027;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_3034,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType3EditPart.java
new file mode 100644
index 0000000..7e81a1f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelType3EditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5034;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_3049,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType4EditPart.java
new file mode 100644
index 0000000..009f131
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelType4EditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5048;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_3068,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType5EditPart.java
new file mode 100644
index 0000000..2e319e4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelType5EditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5050;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_3074,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType6EditPart.java
new file mode 100644
index 0000000..20ca5af
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType6EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelType6EditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5053;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelType6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_3077,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelType6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType7EditPart.java
new file mode 100644
index 0000000..783f109
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelType7EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelType7EditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5054;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelType7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_3078,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelType7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelTypeEditPart.java
new file mode 100644
index 0000000..eb0b51a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/AtomicUnitLabelTypeEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class AtomicUnitLabelTypeEditPart extends CompartmentEditPart implements

+		ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5085;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitLabelTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.AtomicUnit_2007,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.AtomicUnitLabelTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit2EditPart.java
new file mode 100644
index 0000000..649b2d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit2EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart.CartesianQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnit2ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3003;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict2EditPart) {

+			((CartesianQueuedUnitNameTypeLblStrict2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit3EditPart.java
new file mode 100644
index 0000000..9a10d2f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit3EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart.CartesianQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnit3ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3007;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict3EditPart) {

+			((CartesianQueuedUnitNameTypeLblStrict3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit4EditPart.java
new file mode 100644
index 0000000..a642d95
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit4EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart.CartesianQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnit4ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3025;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict4EditPart) {

+			((CartesianQueuedUnitNameTypeLblStrict4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit5EditPart.java
new file mode 100644
index 0000000..4fd669a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit5EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart.CartesianQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnit5ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3029;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict5EditPart) {

+			((CartesianQueuedUnitNameTypeLblStrict5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit6EditPart.java
new file mode 100644
index 0000000..ea7c698
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit6EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart.CartesianQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnit6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnit6ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit6EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3033;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnit6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnit6CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict6EditPart) {

+			((CartesianQueuedUnitNameTypeLblStrict6EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict6EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit7EditPart.java
new file mode 100644
index 0000000..7d42770
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnit7EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnit7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnit7ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit7EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3047;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnit7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnit7CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict7EditPart) {

+			((CartesianQueuedUnitNameTypeLblStrict7EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrict7EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..6235dbe
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7003;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..f9fe04c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7007;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..839c0ca
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7011;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..4815300
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7015;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..ae7a1d2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7021;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..c1ef01e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7039;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..be70376
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7001;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.java
new file mode 100644
index 0000000..a031a13
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7004;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.java
new file mode 100644
index 0000000..bec06d6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7008;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.java
new file mode 100644
index 0000000..6c6c448
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7012;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.java
new file mode 100644
index 0000000..231f34b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7016;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.java
new file mode 100644
index 0000000..3ee01a6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7022;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.java
new file mode 100644
index 0000000..b0775be
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7040;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.java
new file mode 100644
index 0000000..1a7b069
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7002;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitEditPart.java
new file mode 100644
index 0000000..07edb9e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitEditPart.java
@@ -0,0 +1,451 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.CartesianQueuedUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.CartesianQueuedUnitItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2002;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CartesianQueuedUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CartesianQueuedUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		CartesianQueuedUnitFigure figure = new CartesianQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitFigure getPrimaryShape() {

+		return (CartesianQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrictEditPart) {

+			((CartesianQueuedUnitNameTypeLblStrictEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureCartesianQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof CartesianQueuedUnitNameTypeLblStrictEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort2EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart) {

+			return getPrimaryShape()

+					.getCartesianQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public class CartesianQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureCartesianQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public CartesianQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureCartesianQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureCartesianQueuedUnitLabelFigure

+					.setText("CartesianQueuedUnit");

+			fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureCartesianQueuedUnitLabelFigure);

+

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);

+

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fCartesianQueuedUnitRefactoringUnitCompartmentFigure

+					.setOutline(false);

+

+			this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {

+			return fFigureCartesianQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {

+			return fCartesianQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict2EditPart.java
new file mode 100644
index 0000000..7fab219
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrict2EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5079;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrict2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_3003,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict3EditPart.java
new file mode 100644
index 0000000..f0c9584
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrict3EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5077;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrict3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_3007,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict4EditPart.java
new file mode 100644
index 0000000..4dfeac7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrict4EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5075;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrict4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_3025,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict5EditPart.java
new file mode 100644
index 0000000..ea0d1a3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrict5EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5073;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrict5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_3029,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict6EditPart.java
new file mode 100644
index 0000000..ae24b7a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict6EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrict6EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5028;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrict6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_3033,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict7EditPart.java
new file mode 100644
index 0000000..b393e23
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrict7EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrict7EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5033;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrict7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_3047,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrictEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrictEditPart.java
new file mode 100644
index 0000000..b2a1561
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CartesianQueuedUnitNameTypeLblStrictEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitNameTypeLblStrictEditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5080;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitNameTypeLblStrictEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.CartesianQueuedUnit_2002,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CompositeRefactoringEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CompositeRefactoringEditPart.java
new file mode 100644
index 0000000..e710fe4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/CompositeRefactoringEditPart.java
@@ -0,0 +1,134 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DiagramDragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.ComrelCreateShortcutDecorationsCommand;

+import comrel.diagram.edit.policies.CompositeRefactoringCanonicalEditPolicy;

+import comrel.diagram.edit.policies.CompositeRefactoringItemSemanticEditPolicy;

+

+/**

+ * @generated

+ */

+public class CompositeRefactoringEditPart extends DiagramEditPart {

+

+	/**

+	 * @generated

+	 */

+	public final static String MODEL_ID = "Comrel"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 1000;

+

+	/**

+	 * @generated

+	 */

+	public CompositeRefactoringEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new CompositeRefactoringItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new CompositeRefactoringCanonicalEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DiagramDragDropEditPolicy() {

+					public Command getDropObjectsCommand(

+							DropObjectsRequest dropRequest) {

+						ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>();

+						for (Iterator<?> it = dropRequest.getObjects()

+								.iterator(); it.hasNext();) {

+							Object nextObject = it.next();

+							if (false == nextObject instanceof EObject) {

+								continue;

+							}

+							viewDescriptors

+									.add(new CreateViewRequest.ViewDescriptor(

+											new EObjectAdapter(

+													(EObject) nextObject),

+											Node.class, null,

+											getDiagramPreferencesHint()));

+						}

+						return createShortcutsCommand(dropRequest,

+								viewDescriptors);

+					}

+

+					private Command createShortcutsCommand(

+							DropObjectsRequest dropRequest,

+							List<CreateViewRequest.ViewDescriptor> viewDescriptors) {

+						Command command = createViewsAndArrangeCommand(

+								dropRequest, viewDescriptors);

+						if (command != null) {

+							return command

+									.chain(new ICommandProxy(

+											new ComrelCreateShortcutDecorationsCommand(

+													getEditingDomain(),

+													(View) getModel(),

+													viewDescriptors)));

+						}

+						return null;

+					}

+				});

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.POPUPBAR_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	/*package-local*/static class NodeLabelDragPolicy extends

+			NonResizableEditPolicy {

+

+		/**

+		 * @generated

+		 */

+		@SuppressWarnings("rawtypes")

+		protected List createSelectionHandles() {

+			MoveHandle h = new MoveHandle((GraphicalEditPart) getHost());

+			h.setBorder(null);

+			return Collections.singletonList(h);

+		}

+

+		/**

+		 * @generated

+		 */

+		public Command getCommand(Request request) {

+			return null;

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean understandsRequest(Request request) {

+			return false;

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ComrelEditPartFactory.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ComrelEditPartFactory.java
new file mode 100644
index 0000000..c0a5bf3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ComrelEditPartFactory.java
@@ -0,0 +1,1009 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.FigureUtilities;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPartFactory;

+import org.eclipse.gef.tools.CellEditorLocator;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.viewers.CellEditor;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.widgets.Text;

+

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelEditPartFactory implements EditPartFactory {

+

+	/**

+	 * @generated

+	 */

+	public EditPart createEditPart(EditPart context, Object model) {

+		if (model instanceof View) {

+			View view = (View) model;

+			switch (ComrelVisualIDRegistry.getVisualID(view)) {

+

+			case CompositeRefactoringEditPart.VISUAL_ID:

+				return new CompositeRefactoringEditPart(view);

+

+			case SingleInputPortEditPart.VISUAL_ID:

+				return new SingleInputPortEditPart(view);

+

+			case SingleInputPortNameTypeEditPart.VISUAL_ID:

+				return new SingleInputPortNameTypeEditPart(view);

+

+			case CartesianQueuedUnitEditPart.VISUAL_ID:

+				return new CartesianQueuedUnitEditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrictEditPart(view);

+

+			case ParallelQueuedUnitEditPart.VISUAL_ID:

+				return new ParallelQueuedUnitEditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrictEditPart(view);

+

+			case SingleQueuedUnitEditPart.VISUAL_ID:

+				return new SingleQueuedUnitEditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrictEditPart(view);

+

+			case SequentialUnitEditPart.VISUAL_ID:

+				return new SequentialUnitEditPart(view);

+

+			case SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrictEditPart(view);

+

+			case ConditionalUnitEditPart.VISUAL_ID:

+				return new ConditionalUnitEditPart(view);

+

+			case ConditionalUnitNameTypeEditPart.VISUAL_ID:

+				return new ConditionalUnitNameTypeEditPart(view);

+

+			case AtomicUnitEditPart.VISUAL_ID:

+				return new AtomicUnitEditPart(view);

+

+			case AtomicUnitLabelTypeEditPart.VISUAL_ID:

+				return new AtomicUnitLabelTypeEditPart(view);

+

+			case SingleInputPort2EditPart.VISUAL_ID:

+				return new SingleInputPort2EditPart(view);

+

+			case SingleInputPortNameType2EditPart.VISUAL_ID:

+				return new SingleInputPortNameType2EditPart(view);

+

+			case MultiInputPortEditPart.VISUAL_ID:

+				return new MultiInputPortEditPart(view);

+

+			case MultiInputPortNameTypeEditPart.VISUAL_ID:

+				return new MultiInputPortNameTypeEditPart(view);

+

+			case CartesianQueuedUnit2EditPart.VISUAL_ID:

+				return new CartesianQueuedUnit2EditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrict2EditPart(view);

+

+			case ParallelQueuedUnit2EditPart.VISUAL_ID:

+				return new ParallelQueuedUnit2EditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrict2EditPart(view);

+

+			case SingleInputPort3EditPart.VISUAL_ID:

+				return new SingleInputPort3EditPart(view);

+

+			case SingleInputPortNameType3EditPart.VISUAL_ID:

+				return new SingleInputPortNameType3EditPart(view);

+

+			case MultiInputPort2EditPart.VISUAL_ID:

+				return new MultiInputPort2EditPart(view);

+

+			case MultiInputPortNameType2EditPart.VISUAL_ID:

+				return new MultiInputPortNameType2EditPart(view);

+

+			case CartesianQueuedUnit3EditPart.VISUAL_ID:

+				return new CartesianQueuedUnit3EditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrict3EditPart(view);

+

+			case SingleFeatureUnitEditPart.VISUAL_ID:

+				return new SingleFeatureUnitEditPart(view);

+

+			case SingleFeatureUnitNameTypeEditPart.VISUAL_ID:

+				return new SingleFeatureUnitNameTypeEditPart(view);

+

+			case SingleInputPort4EditPart.VISUAL_ID:

+				return new SingleInputPort4EditPart(view);

+

+			case SingleInputPortNameType4EditPart.VISUAL_ID:

+				return new SingleInputPortNameType4EditPart(view);

+

+			case MultiInputPort3EditPart.VISUAL_ID:

+				return new MultiInputPort3EditPart(view);

+

+			case MultiInputPortNameType3EditPart.VISUAL_ID:

+				return new MultiInputPortNameType3EditPart(view);

+

+			case SingleOutputPortEditPart.VISUAL_ID:

+				return new SingleOutputPortEditPart(view);

+

+			case SingleOutputPortNameTypeEditPart.VISUAL_ID:

+				return new SingleOutputPortNameTypeEditPart(view);

+

+			case MultiFeatureUnitEditPart.VISUAL_ID:

+				return new MultiFeatureUnitEditPart(view);

+

+			case MultiFeatureUnitNameTypeEditPart.VISUAL_ID:

+				return new MultiFeatureUnitNameTypeEditPart(view);

+

+			case SingleInputPort5EditPart.VISUAL_ID:

+				return new SingleInputPort5EditPart(view);

+

+			case SingleInputPortNameType5EditPart.VISUAL_ID:

+				return new SingleInputPortNameType5EditPart(view);

+

+			case MultiInputPort4EditPart.VISUAL_ID:

+				return new MultiInputPort4EditPart(view);

+

+			case MultiInputPortNameType4EditPart.VISUAL_ID:

+				return new MultiInputPortNameType4EditPart(view);

+

+			case MultiOutputPortEditPart.VISUAL_ID:

+				return new MultiOutputPortEditPart(view);

+

+			case MultiOutputPortNameTypeEditPart.VISUAL_ID:

+				return new MultiOutputPortNameTypeEditPart(view);

+

+			case SingleFilterUnitEditPart.VISUAL_ID:

+				return new SingleFilterUnitEditPart(view);

+

+			case SingleFilterUnitNameTypeEditPart.VISUAL_ID:

+				return new SingleFilterUnitNameTypeEditPart(view);

+

+			case MultiInputPort5EditPart.VISUAL_ID:

+				return new MultiInputPort5EditPart(view);

+

+			case MultiInputPortNameType5EditPart.VISUAL_ID:

+				return new MultiInputPortNameType5EditPart(view);

+

+			case SingleOutputPort2EditPart.VISUAL_ID:

+				return new SingleOutputPort2EditPart(view);

+

+			case SingleOutputPortNameType2EditPart.VISUAL_ID:

+				return new SingleOutputPortNameType2EditPart(view);

+

+			case MultiFilterUnitEditPart.VISUAL_ID:

+				return new MultiFilterUnitEditPart(view);

+

+			case MultiFilterUnitNameTypeEditPart.VISUAL_ID:

+				return new MultiFilterUnitNameTypeEditPart(view);

+

+			case MultiInputPort6EditPart.VISUAL_ID:

+				return new MultiInputPort6EditPart(view);

+

+			case MultiInputPortNameType6EditPart.VISUAL_ID:

+				return new MultiInputPortNameType6EditPart(view);

+

+			case MultiOutputPort2EditPart.VISUAL_ID:

+				return new MultiOutputPort2EditPart(view);

+

+			case MultiOutputPortNameType2EditPart.VISUAL_ID:

+				return new MultiOutputPortNameType2EditPart(view);

+

+			case SingleQueuedUnit2EditPart.VISUAL_ID:

+				return new SingleQueuedUnit2EditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrict2EditPart(view);

+

+			case SingleInputPort6EditPart.VISUAL_ID:

+				return new SingleInputPort6EditPart(view);

+

+			case SingleInputPortNameType6EditPart.VISUAL_ID:

+				return new SingleInputPortNameType6EditPart(view);

+

+			case MultiInputPort7EditPart.VISUAL_ID:

+				return new MultiInputPort7EditPart(view);

+

+			case MultiInputPortNameType7EditPart.VISUAL_ID:

+				return new MultiInputPortNameType7EditPart(view);

+

+			case CartesianQueuedUnit4EditPart.VISUAL_ID:

+				return new CartesianQueuedUnit4EditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrict4EditPart(view);

+

+			case SequentialUnit2EditPart.VISUAL_ID:

+				return new SequentialUnit2EditPart(view);

+

+			case SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrict2EditPart(view);

+

+			case SingleInputPort7EditPart.VISUAL_ID:

+				return new SingleInputPort7EditPart(view);

+

+			case SingleInputPortNameType7EditPart.VISUAL_ID:

+				return new SingleInputPortNameType7EditPart(view);

+

+			case MultiInputPort8EditPart.VISUAL_ID:

+				return new MultiInputPort8EditPart(view);

+

+			case MultiInputPortNameType8EditPart.VISUAL_ID:

+				return new MultiInputPortNameType8EditPart(view);

+

+			case CartesianQueuedUnit5EditPart.VISUAL_ID:

+				return new CartesianQueuedUnit5EditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrict5EditPart(view);

+

+			case ConditionalUnit2EditPart.VISUAL_ID:

+				return new ConditionalUnit2EditPart(view);

+

+			case ConditionalUnitNameType2EditPart.VISUAL_ID:

+				return new ConditionalUnitNameType2EditPart(view);

+

+			case SingleInputPort8EditPart.VISUAL_ID:

+				return new SingleInputPort8EditPart(view);

+

+			case SingleInputPortNameType8EditPart.VISUAL_ID:

+				return new SingleInputPortNameType8EditPart(view);

+

+			case MultiInputPort9EditPart.VISUAL_ID:

+				return new MultiInputPort9EditPart(view);

+

+			case MultiInputPortNameType9EditPart.VISUAL_ID:

+				return new MultiInputPortNameType9EditPart(view);

+

+			case CartesianQueuedUnit6EditPart.VISUAL_ID:

+				return new CartesianQueuedUnit6EditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrict6EditPart(view);

+

+			case AtomicUnit2EditPart.VISUAL_ID:

+				return new AtomicUnit2EditPart(view);

+

+			case AtomicUnitLabelType2EditPart.VISUAL_ID:

+				return new AtomicUnitLabelType2EditPart(view);

+

+			case SingleInputPort9EditPart.VISUAL_ID:

+				return new SingleInputPort9EditPart(view);

+

+			case SingleInputPortNameType9EditPart.VISUAL_ID:

+				return new SingleInputPortNameType9EditPart(view);

+

+			case ParallelQueuedUnit3EditPart.VISUAL_ID:

+				return new ParallelQueuedUnit3EditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrict3EditPart(view);

+

+			case ParallelQueuedUnit4EditPart.VISUAL_ID:

+				return new ParallelQueuedUnit4EditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrict4EditPart(view);

+

+			case SingleFeatureUnit2EditPart.VISUAL_ID:

+				return new SingleFeatureUnit2EditPart(view);

+

+			case SingleFeatureUnitNameType2EditPart.VISUAL_ID:

+				return new SingleFeatureUnitNameType2EditPart(view);

+

+			case MultiFeatureUnit2EditPart.VISUAL_ID:

+				return new MultiFeatureUnit2EditPart(view);

+

+			case MultiFeatureUnitNameType2EditPart.VISUAL_ID:

+				return new MultiFeatureUnitNameType2EditPart(view);

+

+			case SingleFilterUnit2EditPart.VISUAL_ID:

+				return new SingleFilterUnit2EditPart(view);

+

+			case SingleFilterUnitNameType2EditPart.VISUAL_ID:

+				return new SingleFilterUnitNameType2EditPart(view);

+

+			case MultiFilterUnit2EditPart.VISUAL_ID:

+				return new MultiFilterUnit2EditPart(view);

+

+			case MultiFilterUnitNameType2EditPart.VISUAL_ID:

+				return new MultiFilterUnitNameType2EditPart(view);

+

+			case SingleQueuedUnit3EditPart.VISUAL_ID:

+				return new SingleQueuedUnit3EditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrict3EditPart(view);

+

+			case ParallelQueuedUnit5EditPart.VISUAL_ID:

+				return new ParallelQueuedUnit5EditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrict5EditPart(view);

+

+			case SequentialUnit3EditPart.VISUAL_ID:

+				return new SequentialUnit3EditPart(view);

+

+			case SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrict3EditPart(view);

+

+			case ParallelQueuedUnit6EditPart.VISUAL_ID:

+				return new ParallelQueuedUnit6EditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrict6EditPart(view);

+

+			case ConditionalUnit3EditPart.VISUAL_ID:

+				return new ConditionalUnit3EditPart(view);

+

+			case ConditionalUnitNameType3EditPart.VISUAL_ID:

+				return new ConditionalUnitNameType3EditPart(view);

+

+			case CartesianQueuedUnit7EditPart.VISUAL_ID:

+				return new CartesianQueuedUnit7EditPart(view);

+

+			case CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitNameTypeLblStrict7EditPart(view);

+

+			case ParallelQueuedUnit7EditPart.VISUAL_ID:

+				return new ParallelQueuedUnit7EditPart(view);

+

+			case ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitNameTypeLblStrict7EditPart(view);

+

+			case AtomicUnit3EditPart.VISUAL_ID:

+				return new AtomicUnit3EditPart(view);

+

+			case AtomicUnitLabelType3EditPart.VISUAL_ID:

+				return new AtomicUnitLabelType3EditPart(view);

+

+			case SingleFeatureUnit3EditPart.VISUAL_ID:

+				return new SingleFeatureUnit3EditPart(view);

+

+			case SingleFeatureUnitNameType3EditPart.VISUAL_ID:

+				return new SingleFeatureUnitNameType3EditPart(view);

+

+			case MultiFeatureUnit3EditPart.VISUAL_ID:

+				return new MultiFeatureUnit3EditPart(view);

+

+			case MultiFeatureUnitNameType3EditPart.VISUAL_ID:

+				return new MultiFeatureUnitNameType3EditPart(view);

+

+			case SingleFilterUnit3EditPart.VISUAL_ID:

+				return new SingleFilterUnit3EditPart(view);

+

+			case SingleFilterUnitNameType3EditPart.VISUAL_ID:

+				return new SingleFilterUnitNameType3EditPart(view);

+

+			case MultiFilterUnit3EditPart.VISUAL_ID:

+				return new MultiFilterUnit3EditPart(view);

+

+			case MultiFilterUnitNameType3EditPart.VISUAL_ID:

+				return new MultiFilterUnitNameType3EditPart(view);

+

+			case SingleQueuedUnit4EditPart.VISUAL_ID:

+				return new SingleQueuedUnit4EditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrict4EditPart(view);

+

+			case SingleFeatureUnit4EditPart.VISUAL_ID:

+				return new SingleFeatureUnit4EditPart(view);

+

+			case SingleFeatureUnitNameType4EditPart.VISUAL_ID:

+				return new SingleFeatureUnitNameType4EditPart(view);

+

+			case MultiFeatureUnit4EditPart.VISUAL_ID:

+				return new MultiFeatureUnit4EditPart(view);

+

+			case MultiFeatureUnitNameType4EditPart.VISUAL_ID:

+				return new MultiFeatureUnitNameType4EditPart(view);

+

+			case SingleFilterUnit4EditPart.VISUAL_ID:

+				return new SingleFilterUnit4EditPart(view);

+

+			case SingleFilterUnitNameType4EditPart.VISUAL_ID:

+				return new SingleFilterUnitNameType4EditPart(view);

+

+			case MultiFilterUnit4EditPart.VISUAL_ID:

+				return new MultiFilterUnit4EditPart(view);

+

+			case MultiFilterUnitNameType4EditPart.VISUAL_ID:

+				return new MultiFilterUnitNameType4EditPart(view);

+

+			case SingleQueuedUnit5EditPart.VISUAL_ID:

+				return new SingleQueuedUnit5EditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrict5EditPart(view);

+

+			case SequentialUnit4EditPart.VISUAL_ID:

+				return new SequentialUnit4EditPart(view);

+

+			case SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrict4EditPart(view);

+

+			case SingleFeatureUnit5EditPart.VISUAL_ID:

+				return new SingleFeatureUnit5EditPart(view);

+

+			case SingleFeatureUnitNameType5EditPart.VISUAL_ID:

+				return new SingleFeatureUnitNameType5EditPart(view);

+

+			case MultiFeatureUnit5EditPart.VISUAL_ID:

+				return new MultiFeatureUnit5EditPart(view);

+

+			case MultiFeatureUnitNameType5EditPart.VISUAL_ID:

+				return new MultiFeatureUnitNameType5EditPart(view);

+

+			case SingleFilterUnit5EditPart.VISUAL_ID:

+				return new SingleFilterUnit5EditPart(view);

+

+			case SingleFilterUnitNameType5EditPart.VISUAL_ID:

+				return new SingleFilterUnitNameType5EditPart(view);

+

+			case MultiFilterUnit5EditPart.VISUAL_ID:

+				return new MultiFilterUnit5EditPart(view);

+

+			case MultiFilterUnitNameType5EditPart.VISUAL_ID:

+				return new MultiFilterUnitNameType5EditPart(view);

+

+			case SingleQueuedUnit6EditPart.VISUAL_ID:

+				return new SingleQueuedUnit6EditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrict6EditPart(view);

+

+			case ConditionalUnit4EditPart.VISUAL_ID:

+				return new ConditionalUnit4EditPart(view);

+

+			case ConditionalUnitNameType4EditPart.VISUAL_ID:

+				return new ConditionalUnitNameType4EditPart(view);

+

+			case SingleQueuedUnit7EditPart.VISUAL_ID:

+				return new SingleQueuedUnit7EditPart(view);

+

+			case SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+				return new SingleQueuedUnitNameTypeLblStrict7EditPart(view);

+

+			case AtomicUnit4EditPart.VISUAL_ID:

+				return new AtomicUnit4EditPart(view);

+

+			case AtomicUnitLabelType4EditPart.VISUAL_ID:

+				return new AtomicUnitLabelType4EditPart(view);

+

+			case SequentialUnit5EditPart.VISUAL_ID:

+				return new SequentialUnit5EditPart(view);

+

+			case SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrict5EditPart(view);

+

+			case SequentialUnit6EditPart.VISUAL_ID:

+				return new SequentialUnit6EditPart(view);

+

+			case SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrict6EditPart(view);

+

+			case ConditionalUnit5EditPart.VISUAL_ID:

+				return new ConditionalUnit5EditPart(view);

+

+			case ConditionalUnitNameType5EditPart.VISUAL_ID:

+				return new ConditionalUnitNameType5EditPart(view);

+

+			case ConditionalUnit6EditPart.VISUAL_ID:

+				return new ConditionalUnit6EditPart(view);

+

+			case ConditionalUnitNameType6EditPart.VISUAL_ID:

+				return new ConditionalUnitNameType6EditPart(view);

+

+			case SequentialUnit7EditPart.VISUAL_ID:

+				return new SequentialUnit7EditPart(view);

+

+			case SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+				return new SequentialUnitNameTypeLblStrict7EditPart(view);

+

+			case AtomicUnit5EditPart.VISUAL_ID:

+				return new AtomicUnit5EditPart(view);

+

+			case AtomicUnitLabelType5EditPart.VISUAL_ID:

+				return new AtomicUnitLabelType5EditPart(view);

+

+			case ConditionalUnit7EditPart.VISUAL_ID:

+				return new ConditionalUnit7EditPart(view);

+

+			case ConditionalUnitNameType7EditPart.VISUAL_ID:

+				return new ConditionalUnitNameType7EditPart(view);

+

+			case ConditionCheckEditPart.VISUAL_ID:

+				return new ConditionCheckEditPart(view);

+

+			case ConditionCheckNameTypeSpecEditPart.VISUAL_ID:

+				return new ConditionCheckNameTypeSpecEditPart(view);

+

+			case AtomicUnit6EditPart.VISUAL_ID:

+				return new AtomicUnit6EditPart(view);

+

+			case AtomicUnitLabelType6EditPart.VISUAL_ID:

+				return new AtomicUnitLabelType6EditPart(view);

+

+			case AtomicUnit7EditPart.VISUAL_ID:

+				return new AtomicUnit7EditPart(view);

+

+			case AtomicUnitLabelType7EditPart.VISUAL_ID:

+				return new AtomicUnitLabelType7EditPart(view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartmentEditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartmentEditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartmentEditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartment2EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartment2EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartment2EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart(

+						view);

+

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+				return new CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartment3EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartment3EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartment3EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartment4EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartment4EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartment4EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartment5EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartment5EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartment6EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartment6EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartment6EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart(

+						view);

+

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+				return new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart(

+						view);

+

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+				return new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart(

+						view);

+

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+				return new SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitIfCompartment7EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitThenCompartment7EditPart(

+						view);

+

+			case ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID:

+				return new ConditionalUnitConditionalUnitElseCompartment7EditPart(

+						view);

+

+			case SinglePortMappingEditPart.VISUAL_ID:

+				return new SinglePortMappingEditPart(view);

+

+			case MultiPortMappingEditPart.VISUAL_ID:

+				return new MultiPortMappingEditPart(view);

+

+			case MultiSinglePortMappingEditPart.VISUAL_ID:

+				return new MultiSinglePortMappingEditPart(view);

+

+			}

+		}

+		return createUnrecognizedEditPart(context, model);

+	}

+

+	/**

+	 * @generated

+	 */

+	private EditPart createUnrecognizedEditPart(EditPart context, Object model) {

+		// Handle creation of unrecognized child node EditParts here

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static CellEditorLocator getTextCellEditorLocator(

+			ITextAwareEditPart source) {

+		if (source.getFigure() instanceof WrappingLabel)

+			return new TextCellEditorLocator((WrappingLabel) source.getFigure());

+		else {

+			return new LabelCellEditorLocator((Label) source.getFigure());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	static private class TextCellEditorLocator implements CellEditorLocator {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel wrapLabel;

+

+		/**

+		 * @generated

+		 */

+		public TextCellEditorLocator(WrappingLabel wrapLabel) {

+			this.wrapLabel = wrapLabel;

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getWrapLabel() {

+			return wrapLabel;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void relocate(CellEditor celleditor) {

+			Text text = (Text) celleditor.getControl();

+			Rectangle rect = getWrapLabel().getTextBounds().getCopy();

+			getWrapLabel().translateToAbsolute(rect);

+			if (!text.getFont().isDisposed()) {

+				if (getWrapLabel().isTextWrapOn()

+						&& getWrapLabel().getText().length() > 0) {

+					rect.setSize(new Dimension(text.computeSize(rect.width,

+							SWT.DEFAULT)));

+				} else {

+					int avr = FigureUtilities.getFontMetrics(text.getFont())

+							.getAverageCharWidth();

+					rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT,

+							SWT.DEFAULT)).expand(avr * 2, 0));

+				}

+			}

+			if (!rect.equals(new Rectangle(text.getBounds()))) {

+				text.setBounds(rect.x, rect.y, rect.width, rect.height);

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class LabelCellEditorLocator implements CellEditorLocator {

+

+		/**

+		 * @generated

+		 */

+		private Label label;

+

+		/**

+		 * @generated

+		 */

+		public LabelCellEditorLocator(Label label) {

+			this.label = label;

+		}

+

+		/**

+		 * @generated

+		 */

+		public Label getLabel() {

+			return label;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void relocate(CellEditor celleditor) {

+			Text text = (Text) celleditor.getControl();

+			Rectangle rect = getLabel().getTextBounds().getCopy();

+			getLabel().translateToAbsolute(rect);

+			if (!text.getFont().isDisposed()) {

+				int avr = FigureUtilities.getFontMetrics(text.getFont())

+						.getAverageCharWidth();

+				rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT,

+						SWT.DEFAULT)).expand(avr * 2, 0));

+			}

+			if (!rect.equals(new Rectangle(text.getBounds()))) {

+				text.setBounds(rect.x, rect.y, rect.width, rect.height);

+			}

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionCheckEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionCheckEditPart.java
new file mode 100644
index 0000000..a84eee9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionCheckEditPart.java
@@ -0,0 +1,298 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionCheckItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionCheckEditPart extends ShapeNodeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3076;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionCheckEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionCheckItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionCheckFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionCheckFigure getPrimaryShape() {

+		return (ConditionCheckFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionCheckNameTypeSpecEditPart) {

+			((ConditionCheckNameTypeSpecEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionCheckLabelFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionCheckNameTypeSpecEditPart) {

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createNodeFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionCheckNameTypeSpecEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionCheckFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionCheckLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionCheckFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionCheckLabelFigure = new WrappingLabel();

+			fFigureConditionCheckLabelFigure.setText("ConditionCheck");

+

+			this.add(fFigureConditionCheckLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionCheckLabelFigure() {

+			return fFigureConditionCheckLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionCheckNameTypeSpecEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionCheckNameTypeSpecEditPart.java
new file mode 100644
index 0000000..361e2a2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionCheckNameTypeSpecEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionCheckNameTypeSpecEditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5052;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionCheckNameTypeSpecEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionCheck_3076,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionCheckNameTypeSpecEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit2EditPart.java
new file mode 100644
index 0000000..a2b8187
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit2EditPart.java
@@ -0,0 +1,493 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnit2ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3030;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType2EditPart) {

+			((ConditionalUnitNameType2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartmentEditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartmentEditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartmentEditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit3EditPart.java
new file mode 100644
index 0000000..c49d015
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit3EditPart.java
@@ -0,0 +1,493 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnit3ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3046;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType3EditPart) {

+			((ConditionalUnitNameType3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment2EditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment2EditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment2EditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit4EditPart.java
new file mode 100644
index 0000000..d28f6f0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit4EditPart.java
@@ -0,0 +1,493 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnit4ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3066;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType4EditPart) {

+			((ConditionalUnitNameType4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment3EditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment3EditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment3EditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit5EditPart.java
new file mode 100644
index 0000000..5b4bb89
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit5EditPart.java
@@ -0,0 +1,493 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnit5ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3071;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType5EditPart) {

+			((ConditionalUnitNameType5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment4EditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment4EditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment4EditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit6EditPart.java
new file mode 100644
index 0000000..c2e85ac
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit6EditPart.java
@@ -0,0 +1,493 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnit6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnit6ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit6EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3072;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnit6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnit6CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType6EditPart) {

+			((ConditionalUnitNameType6EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType6EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment5EditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment5EditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment5EditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameType6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit7EditPart.java
new file mode 100644
index 0000000..8cbdf24
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnit7EditPart.java
@@ -0,0 +1,493 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnit7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnit7ItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit7EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3075;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnit7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnit7CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType7EditPart) {

+			((ConditionalUnitNameType7EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameType7EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment6EditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment6EditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment6EditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameType7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment2EditPart.java
new file mode 100644
index 0000000..200818d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment2EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment2EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7038;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment3EditPart.java
new file mode 100644
index 0000000..4cbc743
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment3EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment3EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7054;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment4EditPart.java
new file mode 100644
index 0000000..cea3539
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment4EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment4EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7064;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment5EditPart.java
new file mode 100644
index 0000000..081435d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment5EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment5EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7068;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment6EditPart.java
new file mode 100644
index 0000000..e643a1e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment6EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment6EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7074;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment7EditPart.java
new file mode 100644
index 0000000..90cbcc6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartment7EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment7EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7084;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartmentEditPart.java
new file mode 100644
index 0000000..cef8e31
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitElseCompartmentEditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartmentEditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7020;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartmentEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitElseCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..0b0beb1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7036;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..4a265ca
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7052;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..cfde887
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7062;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..0666089
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7066;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..2d6c529
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7072;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..3690b62
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7082;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..123cb88
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7018;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment2EditPart.java
new file mode 100644
index 0000000..a1b9780
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment2EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment2EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7035;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment3EditPart.java
new file mode 100644
index 0000000..deccc76
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment3EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment3EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7051;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment4EditPart.java
new file mode 100644
index 0000000..2692cb4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment4EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment4EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7061;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment5EditPart.java
new file mode 100644
index 0000000..ad6ed24
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment5EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment5EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7065;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment6EditPart.java
new file mode 100644
index 0000000..38d3f6c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment6EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment6EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7071;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment7EditPart.java
new file mode 100644
index 0000000..63ec946
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartment7EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment7EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7081;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartmentEditPart.java
new file mode 100644
index 0000000..e7ce2b1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitIfCompartmentEditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartmentEditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7017;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartmentEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitIfCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment2EditPart.java
new file mode 100644
index 0000000..59f2eae
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment2EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment2EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7037;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment3EditPart.java
new file mode 100644
index 0000000..53032b8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment3EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment3EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7053;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment4EditPart.java
new file mode 100644
index 0000000..e521b3e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment4EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment4EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7063;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment5EditPart.java
new file mode 100644
index 0000000..e4acd48
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment5EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment5EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7067;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment6EditPart.java
new file mode 100644
index 0000000..94f12ca
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment6EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment6EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7073;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment7EditPart.java
new file mode 100644
index 0000000..7f430f2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartment7EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment7EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7083;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartmentEditPart.java
new file mode 100644
index 0000000..d11b1ba
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitConditionalUnitThenCompartmentEditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartmentEditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7019;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartmentEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ConditionalUnitConditionalUnitThenCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitEditPart.java
new file mode 100644
index 0000000..e8343f0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitEditPart.java
@@ -0,0 +1,508 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.ConditionalUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ConditionalUnitItemSemanticEditPolicy;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2006;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ConditionalUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ConditionalUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new ConditionalUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitFigure getPrimaryShape() {

+		return (ConditionalUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameTypeEditPart) {

+			((ConditionalUnitNameTypeEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureConditionalUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitIfCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitThenCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ConditionalUnitConditionalUnitElseCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NONE);

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort9EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ConditionalUnitNameTypeEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitIfCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitIfCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitIfCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitThenCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitThenCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitThenCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ConditionalUnitConditionalUnitElseCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getConditionalUnitElseCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ConditionalUnitConditionalUnitElseCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort9EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort9EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment7EditPart) {

+			return getPrimaryShape().getConditionalUnitIfCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getConditionalUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment7EditPart) {

+			return getPrimaryShape().getConditionalUnitThenCompartmentFigure();

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment7EditPart) {

+			return getPrimaryShape().getConditionalUnitElseCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ConditionalUnitNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ConditionalUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureConditionalUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitIfCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitThenCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fConditionalUnitElseCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ConditionalUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureConditionalUnitLabelFigure = new WrappingLabel();

+			fFigureConditionalUnitLabelFigure.setText("ConditionalUnit");

+			fFigureConditionalUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureConditionalUnitLabelFigure);

+

+			fConditionalUnitIfCompartmentFigure = new RectangleFigure();

+			fConditionalUnitIfCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitIfCompartmentFigure);

+

+			fConditionalUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitHelperUnitsCompartmentFigure);

+

+			fConditionalUnitThenCompartmentFigure = new RectangleFigure();

+			fConditionalUnitThenCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitThenCompartmentFigure);

+

+			fConditionalUnitElseCompartmentFigure = new RectangleFigure();

+			fConditionalUnitElseCompartmentFigure.setOutline(false);

+

+			this.add(fConditionalUnitElseCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureConditionalUnitLabelFigure() {

+			return fFigureConditionalUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitIfCompartmentFigure() {

+			return fConditionalUnitIfCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {

+			return fConditionalUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitThenCompartmentFigure() {

+			return fConditionalUnitThenCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getConditionalUnitElseCompartmentFigure() {

+			return fConditionalUnitElseCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType2EditPart.java
new file mode 100644
index 0000000..e67f335
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameType2EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5072;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_3030,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType3EditPart.java
new file mode 100644
index 0000000..5a0fa40
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameType3EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5065;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_3046,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType4EditPart.java
new file mode 100644
index 0000000..56a2b31
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameType4EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5060;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_3066,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType5EditPart.java
new file mode 100644
index 0000000..3eccb94
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameType5EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5057;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_3071,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType6EditPart.java
new file mode 100644
index 0000000..6b83351
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType6EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameType6EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5056;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameType6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_3072,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameType6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType7EditPart.java
new file mode 100644
index 0000000..a0ae612
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameType7EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameType7EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5055;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameType7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_3075,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameType7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameTypeEditPart.java
new file mode 100644
index 0000000..69e7e39
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ConditionalUnitNameTypeEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitNameTypeEditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5084;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ConditionalUnit_2006,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ConditionalUnitNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit2EditPart.java
new file mode 100644
index 0000000..f077597
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit2EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFeatureUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFeatureUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3039;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFeatureUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFeatureUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort5EditPart.VISUAL_ID:

+				case MultiInputPort4EditPart.VISUAL_ID:

+				case MultiOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitFigure getPrimaryShape() {

+		return (MultiFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType2EditPart) {

+			((MultiFeatureUnitNameType2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnitNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFeatureUnitLabelFigure.setText("MultiFeatureUnit");

+

+			this.add(fFigureMultiFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFeatureUnitLabelFigure() {

+			return fFigureMultiFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit3EditPart.java
new file mode 100644
index 0000000..490af8e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit3EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFeatureUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFeatureUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3051;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFeatureUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFeatureUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort5EditPart.VISUAL_ID:

+				case MultiInputPort4EditPart.VISUAL_ID:

+				case MultiOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitFigure getPrimaryShape() {

+		return (MultiFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType3EditPart) {

+			((MultiFeatureUnitNameType3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnitNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFeatureUnitLabelFigure.setText("MultiFeatureUnit");

+

+			this.add(fFigureMultiFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFeatureUnitLabelFigure() {

+			return fFigureMultiFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit4EditPart.java
new file mode 100644
index 0000000..13f8fd1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit4EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFeatureUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFeatureUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3056;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFeatureUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFeatureUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort5EditPart.VISUAL_ID:

+				case MultiInputPort4EditPart.VISUAL_ID:

+				case MultiOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitFigure getPrimaryShape() {

+		return (MultiFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType4EditPart) {

+			((MultiFeatureUnitNameType4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnitNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFeatureUnitLabelFigure.setText("MultiFeatureUnit");

+

+			this.add(fFigureMultiFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFeatureUnitLabelFigure() {

+			return fFigureMultiFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit5EditPart.java
new file mode 100644
index 0000000..24991c1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnit5EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFeatureUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFeatureUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3062;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFeatureUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFeatureUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort5EditPart.VISUAL_ID:

+				case MultiInputPort4EditPart.VISUAL_ID:

+				case MultiOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitFigure getPrimaryShape() {

+		return (MultiFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType5EditPart) {

+			((MultiFeatureUnitNameType5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameType5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnitNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFeatureUnitLabelFigure.setText("MultiFeatureUnit");

+

+			this.add(fFigureMultiFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFeatureUnitLabelFigure() {

+			return fFigureMultiFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitEditPart.java
new file mode 100644
index 0000000..c47a908
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitEditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFeatureUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFeatureUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3012;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFeatureUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFeatureUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort5EditPart.VISUAL_ID:

+				case MultiInputPort4EditPart.VISUAL_ID:

+				case MultiOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitFigure getPrimaryShape() {

+		return (MultiFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameTypeEditPart) {

+			((MultiFeatureUnitNameTypeEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFeatureUnitNameTypeEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort4EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnitNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFeatureUnitLabelFigure.setText("MultiFeatureUnit");

+

+			this.add(fFigureMultiFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFeatureUnitLabelFigure() {

+			return fFigureMultiFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType2EditPart.java
new file mode 100644
index 0000000..a46b4d8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitNameType2EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5030;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFeatureUnit_3039,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFeatureUnitNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType3EditPart.java
new file mode 100644
index 0000000..d531d5c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitNameType3EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5037;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFeatureUnit_3051,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFeatureUnitNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType4EditPart.java
new file mode 100644
index 0000000..6223ef7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitNameType4EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5041;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFeatureUnit_3056,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFeatureUnitNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType5EditPart.java
new file mode 100644
index 0000000..2ad4625
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameType5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitNameType5EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5045;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFeatureUnit_3062,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFeatureUnitNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameTypeEditPart.java
new file mode 100644
index 0000000..291a2bd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFeatureUnitNameTypeEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitNameTypeEditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5013;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFeatureUnit_3012,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFeatureUnitNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit2EditPart.java
new file mode 100644
index 0000000..f9153eb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit2EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFilterUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFilterUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3041;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFilterUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFilterUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort6EditPart.VISUAL_ID:

+				case MultiOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitFigure getPrimaryShape() {

+		return (MultiFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType2EditPart) {

+			((MultiFilterUnitNameType2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFilterUnitNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFilterUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFilterUnitLabelFigure.setText("MultiFilterUnit");

+

+			this.add(fFigureMultiFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFilterUnitLabelFigure() {

+			return fFigureMultiFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit3EditPart.java
new file mode 100644
index 0000000..01d2439
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit3EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFilterUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFilterUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3053;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFilterUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFilterUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort6EditPart.VISUAL_ID:

+				case MultiOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitFigure getPrimaryShape() {

+		return (MultiFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType3EditPart) {

+			((MultiFilterUnitNameType3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFilterUnitNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFilterUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFilterUnitLabelFigure.setText("MultiFilterUnit");

+

+			this.add(fFigureMultiFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFilterUnitLabelFigure() {

+			return fFigureMultiFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit4EditPart.java
new file mode 100644
index 0000000..1e00024
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit4EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFilterUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFilterUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3058;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFilterUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFilterUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort6EditPart.VISUAL_ID:

+				case MultiOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitFigure getPrimaryShape() {

+		return (MultiFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType4EditPart) {

+			((MultiFilterUnitNameType4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFilterUnitNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFilterUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFilterUnitLabelFigure.setText("MultiFilterUnit");

+

+			this.add(fFigureMultiFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFilterUnitLabelFigure() {

+			return fFigureMultiFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit5EditPart.java
new file mode 100644
index 0000000..ed14283
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnit5EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFilterUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFilterUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3064;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFilterUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFilterUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort6EditPart.VISUAL_ID:

+				case MultiOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitFigure getPrimaryShape() {

+		return (MultiFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType5EditPart) {

+			((MultiFilterUnitNameType5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOt

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameType5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFilterUnitNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFilterUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFilterUnitLabelFigure.setText("MultiFilterUnit");

+

+			this.add(fFigureMultiFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFilterUnitLabelFigure() {

+			return fFigureMultiFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitEditPart.java
new file mode 100644
index 0000000..fb2ba2a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitEditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.MultiFilterUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.MultiFilterUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3019;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiFilterUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new MultiFilterUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort6EditPart.VISUAL_ID:

+				case MultiOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new MultiFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitFigure getPrimaryShape() {

+		return (MultiFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameTypeEditPart) {

+			((MultiFilterUnitNameTypeEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureMultiFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof MultiFilterUnitNameTypeEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort6EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiFilterUnitNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureMultiFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public MultiFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureMultiFilterUnitLabelFigure = new WrappingLabel();

+			fFigureMultiFilterUnitLabelFigure.setText("MultiFilterUnit");

+

+			this.add(fFigureMultiFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureMultiFilterUnitLabelFigure() {

+			return fFigureMultiFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType2EditPart.java
new file mode 100644
index 0000000..30d30e4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitNameType2EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5032;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFilterUnit_3041,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFilterUnitNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType3EditPart.java
new file mode 100644
index 0000000..f7a21c3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitNameType3EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5039;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFilterUnit_3053,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFilterUnitNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType4EditPart.java
new file mode 100644
index 0000000..0113c8f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitNameType4EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5043;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFilterUnit_3058,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFilterUnitNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType5EditPart.java
new file mode 100644
index 0000000..7e77a99
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameType5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitNameType5EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5047;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFilterUnit_3064,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFilterUnitNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameTypeEditPart.java
new file mode 100644
index 0000000..37f9c2e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiFilterUnitNameTypeEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitNameTypeEditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5019;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiFilterUnit_3019,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiFilterUnitNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort2EditPart.java
new file mode 100644
index 0000000..8e0f651
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort2EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort2EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3006;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort3EditPart.java
new file mode 100644
index 0000000..a026690
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort3EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort3EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3010;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType3EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort4EditPart.java
new file mode 100644
index 0000000..ad617f5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort4EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort4EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3014;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType4EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort5EditPart.java
new file mode 100644
index 0000000..01e7cbf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort5EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort5EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3017;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType5EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort6EditPart.java
new file mode 100644
index 0000000..240953d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort6EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort6ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort6EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3020;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType6EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort7EditPart.java
new file mode 100644
index 0000000..e8f87ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort7EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort7ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort7EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3024;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort8EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort8EditPart.java
new file mode 100644
index 0000000..7f37710
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort8EditPart.java
@@ -0,0 +1,407 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.policies.MultiInputPort8ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort8EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3028;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort8EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort8ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType8EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort9EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort9EditPart.java
new file mode 100644
index 0000000..dabe97d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPort9EditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPort9ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPort9EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3032;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort9EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPort9ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameType9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameType9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameType9EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortEditPart.java
new file mode 100644
index 0000000..83452d1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortEditPart.java
@@ -0,0 +1,408 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart.MultiInputPortFigure;

+import comrel.diagram.edit.policies.MultiInputPortItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiInputPortEditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3002;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiInputPortItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPortNameTypeEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiInputPortFigure figure = new MultiInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortFigure getPrimaryShape() {

+		return (MultiInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiInputPortNameTypeEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiInputPortNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof comrel.diagram.edit.parts.MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType2EditPart.java
new file mode 100644
index 0000000..61c9303
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType2EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType2EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5005;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType2EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3006,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType3EditPart.java
new file mode 100644
index 0000000..eef19c6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType3EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType3EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5007;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType3EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3010,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType4EditPart.java
new file mode 100644
index 0000000..a9e34db
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType4EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType4EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5011;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType4EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3014,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType5EditPart.java
new file mode 100644
index 0000000..e1cef15
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType5EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType5EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5014;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType5EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3017,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType6EditPart.java
new file mode 100644
index 0000000..5c56d55
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType6EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType6EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5017;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType6EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3020,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType7EditPart.java
new file mode 100644
index 0000000..06a8e59
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType7EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType7EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5021;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType7EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3024,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType8EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType8EditPart.java
new file mode 100644
index 0000000..22081df
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType8EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType8EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5023;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType8EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType8EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3028,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType8EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType9EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType9EditPart.java
new file mode 100644
index 0000000..d35e6d0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameType9EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameType9EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5025;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameType9EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameType9EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3032,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameType9EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameTypeEditPart.java
new file mode 100644
index 0000000..fab8aa5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiInputPortNameTypeEditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiInputPortNameTypeEditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5003;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiInputPortNameTypeEditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiInputPort_3002,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiInputPortNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiInputPortLabelFigure() {

+			this.setText("MultiInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPort2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPort2EditPart.java
new file mode 100644
index 0000000..e12e607
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPort2EditPart.java
@@ -0,0 +1,377 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.Ellipse;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.OutputPort;

+import comrel.diagram.edit.policies.MultiOutputPort2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.OutputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiOutputPort2EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3021;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPort2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiOutputPort2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiOutputPortNameType2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiOutputPortFigure figure = new MultiOutputPortFigure();

+		OutputPort port = (OutputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortFigure getPrimaryShape() {

+		return (MultiOutputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiOutputPortNameType2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiOutputPortNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiOutputPortFigure extends OutputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiOutputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortEditPart.java
new file mode 100644
index 0000000..a9442d5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortEditPart.java
@@ -0,0 +1,377 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.Ellipse;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.OutputPort;

+import comrel.diagram.edit.policies.MultiOutputPortItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.OutputPortFigure;

+

+/**

+ * @generated

+ */

+public class MultiOutputPortEditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3015;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiOutputPortItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiOutputPortNameTypeEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		MultiOutputPortFigure figure = new MultiOutputPortFigure();

+		OutputPort port = (OutputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortFigure getPrimaryShape() {

+		return (MultiOutputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof MultiOutputPortNameTypeEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(MultiOutputPortNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiPortMapping_4002);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiPortMapping_4002);

+		}

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.MultiPortMapping_4002) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiOutputPortFigure extends OutputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiOutputPortFigure() {

+			this.setLineWidth(10);

+			this.setForegroundColor(THIS_FORE);

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	static final Color THIS_FORE = new Color(null, 255, 0, 0);

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortNameType2EditPart.java
new file mode 100644
index 0000000..d8f67c7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortNameType2EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiOutputPortNameType2EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5018;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiOutputPortNameType2EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiOutputPort_3021,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiOutputPortNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiOutputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiOutputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiOutputPortLabelFigure() {

+			this.setText("MultiOutputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortNameTypeEditPart.java
new file mode 100644
index 0000000..dd53007
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiOutputPortNameTypeEditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class MultiOutputPortNameTypeEditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5012;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.MultiOutputPortNameTypeEditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.MultiOutputPort_3015,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.MultiOutputPortNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new MultiOutputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class MultiOutputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public MultiOutputPortLabelFigure() {

+			this.setText("MultiOutputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiPortMappingEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiPortMappingEditPart.java
new file mode 100644
index 0000000..1368a86
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiPortMappingEditPart.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.Connection;

+import org.eclipse.draw2d.Graphics;

+import org.eclipse.draw2d.PolylineDecoration;

+import org.eclipse.draw2d.RotatableDecoration;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.PortMapping;

+import comrel.diagram.edit.policies.MultiPortMappingItemSemanticEditPolicy;

+import comrel.figures.PortMappingFigure;

+

+/**

+ * @generated

+ */

+public class MultiPortMappingEditPart extends ConnectionNodeEditPart implements

+		ITreeBranchEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 4002;

+

+	/**

+	 * @generated

+	 */

+	public MultiPortMappingEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiPortMappingItemSemanticEditPolicy());

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated NOT

+	 */

+

+	protected Connection createConnectionFigure() {

+		PortMapping mapping = (PortMapping) this.resolveSemanticElement();

+		PortMappingFigure figure = new MultiPortMappingFigure();

+		figure.setMapping(mapping);

+		return figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiPortMappingFigure getPrimaryShape() {

+		return (MultiPortMappingFigure) getFigure();

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiPortMappingFigure extends PortMappingFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiPortMappingFigure() {

+			this.setLineWidth(2);

+			this.setLineStyle(Graphics.LINE_DOT);

+

+			setTargetDecoration(createTargetDecoration());

+		}

+

+		/**

+		 * @generated

+		 */

+		private RotatableDecoration createTargetDecoration() {

+			PolylineDecoration df = new PolylineDecoration();

+			return df;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiSinglePortMappingEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiSinglePortMappingEditPart.java
new file mode 100644
index 0000000..21784a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/MultiSinglePortMappingEditPart.java
@@ -0,0 +1,95 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.Connection;

+import org.eclipse.draw2d.Graphics;

+import org.eclipse.draw2d.PolylineDecoration;

+import org.eclipse.draw2d.RotatableDecoration;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.PortMapping;

+import comrel.diagram.edit.policies.MultiSinglePortMappingItemSemanticEditPolicy;

+import comrel.figures.PortMappingFigure;

+

+/**

+ * @generated

+ */

+public class MultiSinglePortMappingEditPart extends ConnectionNodeEditPart

+		implements ITreeBranchEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 4003;

+

+	/**

+	 * @generated

+	 */

+	public MultiSinglePortMappingEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new MultiSinglePortMappingItemSemanticEditPolicy());

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated NOT

+	 */

+

+	protected Connection createConnectionFigure() {

+		PortMapping mapping = (PortMapping) this.resolveSemanticElement();

+		PortMappingFigure figure = new MultiSinglePortMappingFigure();

+		figure.setMapping(mapping);

+		return figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public MultiSinglePortMappingFigure getPrimaryShape() {

+		return (MultiSinglePortMappingFigure) getFigure();

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class MultiSinglePortMappingFigure extends PortMappingFigure {

+

+		/**

+		 * @generated

+		 */

+		public MultiSinglePortMappingFigure() {

+			this.setLineWidth(2);

+			this.setLineStyle(Graphics.LINE_DOT);

+

+			setTargetDecoration(createTargetDecoration());

+		}

+

+		/**

+		 * @generated

+		 */

+		private RotatableDecoration createTargetDecoration() {

+			PolylineDecoration df = new PolylineDecoration();

+			return df;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit2EditPart.java
new file mode 100644
index 0000000..c47e855
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit2EditPart.java
@@ -0,0 +1,438 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart.ParallelQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3004;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict2EditPart) {

+			((ParallelQueuedUnitNameTypeLblStrict2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit3EditPart.java
new file mode 100644
index 0000000..d578559
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit3EditPart.java
@@ -0,0 +1,438 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart.ParallelQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3036;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict3EditPart) {

+			((ParallelQueuedUnitNameTypeLblStrict3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit4EditPart.java
new file mode 100644
index 0000000..5df870a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit4EditPart.java
@@ -0,0 +1,438 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart.ParallelQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3037;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict4EditPart) {

+			((ParallelQueuedUnitNameTypeLblStrict4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit5EditPart.java
new file mode 100644
index 0000000..23800ba
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit5EditPart.java
@@ -0,0 +1,438 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart.ParallelQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3043;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict5EditPart) {

+			((ParallelQueuedUnitNameTypeLblStrict5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit6EditPart.java
new file mode 100644
index 0000000..2d330a2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit6EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart.ParallelQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit6ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit6EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3045;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnit6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnit6CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict6EditPart) {

+			((ParallelQueuedUnitNameTypeLblStrict6EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict6EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit7EditPart.java
new file mode 100644
index 0000000..d8d3adb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnit7EditPart.java
@@ -0,0 +1,438 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnit7ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit7EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3048;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnit7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnit7CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict7EditPart) {

+			((ParallelQueuedUnitNameTypeLblStrict7EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrict7EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitEditPart.java
new file mode 100644
index 0000000..c83d6e5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitEditPart.java
@@ -0,0 +1,453 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart.ParallelQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2003;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		ParallelQueuedUnitFigure figure = new ParallelQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitFigure getPrimaryShape() {

+		return (ParallelQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrictEditPart) {

+			((ParallelQueuedUnitNameTypeLblStrictEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureParallelQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof ParallelQueuedUnitNameTypeLblStrictEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getParallelQueuedUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public class ParallelQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureParallelQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public ParallelQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureParallelQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureParallelQueuedUnitLabelFigure.setText("ParallelQueuedUnit");

+			fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureParallelQueuedUnitLabelFigure);

+

+			fParallelQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);

+

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fParallelQueuedUnitRefactoringUnitsCompartmentFigure

+					.setOutline(false);

+

+			this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureParallelQueuedUnitLabelFigure() {

+			return fFigureParallelQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {

+			return fParallelQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {

+			return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict2EditPart.java
new file mode 100644
index 0000000..417247b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrict2EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5078;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrict2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_3004,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict3EditPart.java
new file mode 100644
index 0000000..a916514
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrict3EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5071;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrict3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_3036,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict4EditPart.java
new file mode 100644
index 0000000..7197b0e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrict4EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5070;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrict4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_3037,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict5EditPart.java
new file mode 100644
index 0000000..0e62774
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrict5EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5068;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrict5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_3043,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict6EditPart.java
new file mode 100644
index 0000000..404dfe8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict6EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrict6EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5066;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrict6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_3045,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict7EditPart.java
new file mode 100644
index 0000000..c3fe75f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrict7EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrict7EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5035;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrict7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_3048,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrictEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrictEditPart.java
new file mode 100644
index 0000000..bb4d23a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitNameTypeLblStrictEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitNameTypeLblStrictEditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5081;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitNameTypeLblStrictEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.ParallelQueuedUnit_2003,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..5efeda8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7023;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..a543929
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7025;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..9c7c83c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7029;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..204a3f5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7033;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..2a04cfb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7041;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..150c39a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7075;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..941cae0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7005;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..5edc671
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7024;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..c6394e0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7026;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..59585ed
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7030;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..c4c0c56
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7034;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..76ca938
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7042;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..4dddf73
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7076;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..7a957ce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7006;

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit2EditPart.java
new file mode 100644
index 0000000..71e55f2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit2EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.SequentialUnitEditPart.SequentialUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3026;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict2EditPart) {

+			((SequentialUnitNameTypeLblStrict2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit3EditPart.java
new file mode 100644
index 0000000..44645ed
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit3EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart.SequentialUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3044;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict3EditPart) {

+			((SequentialUnitNameTypeLblStrict3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit4EditPart.java
new file mode 100644
index 0000000..28c4786
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit4EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart.SequentialUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3060;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict4EditPart) {

+			((SequentialUnitNameTypeLblStrict4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit5EditPart.java
new file mode 100644
index 0000000..78ce982
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit5EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart.SequentialUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3069;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict5EditPart) {

+			((SequentialUnitNameTypeLblStrict5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit6EditPart.java
new file mode 100644
index 0000000..c4a7bd2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit6EditPart.java
@@ -0,0 +1,439 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart.SequentialUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit6ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit6EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3070;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnit6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnit6CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict6EditPart) {

+			((SequentialUnitNameTypeLblStrict6EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict6EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit7EditPart.java
new file mode 100644
index 0000000..4b046f0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnit7EditPart.java
@@ -0,0 +1,438 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnit7ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit7EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3073;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnit7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnit7CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict7EditPart) {

+			((SequentialUnitNameTypeLblStrict7EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrict7EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitEditPart.java
new file mode 100644
index 0000000..25b0780
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitEditPart.java
@@ -0,0 +1,453 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2005;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SequentialUnitFigure figure = new SequentialUnitFigure();

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, false);

+		return primaryShape = figure;

+		//		return primaryShape = new SequentialUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitFigure getPrimaryShape() {

+		return (SequentialUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrictEditPart) {

+			((SequentialUnitNameTypeLblStrictEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSequentialUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort8EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SequentialUnitNameTypeLblStrictEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort7EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort8EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort8EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getSequentialUnitRefactoringUnitsCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SequentialUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSequentialUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SequentialUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSequentialUnitLabelFigure = new WrappingLabel();

+			fFigureSequentialUnitLabelFigure.setText("SequentialUnit");

+			fFigureSequentialUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSequentialUnitLabelFigure);

+

+			fSequentialUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitHelperUnitsCompartmentFigure);

+

+			fSequentialUnitRefactoringUnitsCompartmentFigure = new RectangleFigure();

+			fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSequentialUnitLabelFigure() {

+			return fFigureSequentialUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {

+			return fSequentialUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {

+			return fSequentialUnitRefactoringUnitsCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict2EditPart.java
new file mode 100644
index 0000000..c8def06
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrict2EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5074;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrict2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_3026,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict3EditPart.java
new file mode 100644
index 0000000..daebfcd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrict3EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5067;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrict3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_3044,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict4EditPart.java
new file mode 100644
index 0000000..8fb1e59
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrict4EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5062;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrict4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_3060,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict5EditPart.java
new file mode 100644
index 0000000..9d5b659
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrict5EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5059;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrict5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_3069,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict6EditPart.java
new file mode 100644
index 0000000..aefb2bf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict6EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrict6EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5058;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrict6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_3070,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict7EditPart.java
new file mode 100644
index 0000000..082a7d2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrict7EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrict7EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5051;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrict7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_3073,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrictEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrictEditPart.java
new file mode 100644
index 0000000..7b430f7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitNameTypeLblStrictEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SequentialUnitNameTypeLblStrictEditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5083;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitNameTypeLblStrictEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SequentialUnit_2005,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..675748a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7031;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..b0985da
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7047;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..650b66a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7057;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..144ddae
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7059;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..3da8297
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7069;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..7908e64
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7079;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..a8e0bb5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart extends

+		ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7013;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..65681c4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7032;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..c547a02
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7048;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..e629cd6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7058;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..d266466
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7060;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..db81165
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7070;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..85550c2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7080;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..e612204
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7014;

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit2EditPart.java
new file mode 100644
index 0000000..ec74784
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit2EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFeatureUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFeatureUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3038;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFeatureUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFeatureUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort3EditPart.VISUAL_ID:

+				case SingleOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitFigure getPrimaryShape() {

+		return (SingleFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType2EditPart) {

+			((SingleFeatureUnitNameType2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnitNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFeatureUnitLabelFigure.setText("SingleFeatureUnit");

+

+			this.add(fFigureSingleFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFeatureUnitLabelFigure() {

+			return fFigureSingleFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit3EditPart.java
new file mode 100644
index 0000000..e114f37
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit3EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFeatureUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFeatureUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3050;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFeatureUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFeatureUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort3EditPart.VISUAL_ID:

+				case SingleOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitFigure getPrimaryShape() {

+		return (SingleFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType3EditPart) {

+			((SingleFeatureUnitNameType3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnitNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFeatureUnitLabelFigure.setText("SingleFeatureUnit");

+

+			this.add(fFigureSingleFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFeatureUnitLabelFigure() {

+			return fFigureSingleFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit4EditPart.java
new file mode 100644
index 0000000..c5932be
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit4EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFeatureUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFeatureUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3055;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFeatureUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFeatureUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort3EditPart.VISUAL_ID:

+				case SingleOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitFigure getPrimaryShape() {

+		return (SingleFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType4EditPart) {

+			((SingleFeatureUnitNameType4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnitNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFeatureUnitLabelFigure.setText("SingleFeatureUnit");

+

+			this.add(fFigureSingleFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFeatureUnitLabelFigure() {

+			return fFigureSingleFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit5EditPart.java
new file mode 100644
index 0000000..a08681f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnit5EditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFeatureUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFeatureUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3061;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFeatureUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFeatureUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort3EditPart.VISUAL_ID:

+				case SingleOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitFigure getPrimaryShape() {

+		return (SingleFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType5EditPart) {

+			((SingleFeatureUnitNameType5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameType5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnitNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFeatureUnitLabelFigure.setText("SingleFeatureUnit");

+

+			this.add(fFigureSingleFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFeatureUnitLabelFigure() {

+			return fFigureSingleFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitEditPart.java
new file mode 100644
index 0000000..5f8273d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitEditPart.java
@@ -0,0 +1,366 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFeatureUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFeatureUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3008;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFeatureUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFeatureUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort3EditPart.VISUAL_ID:

+				case SingleOutputPortEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFeatureUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitFigure getPrimaryShape() {

+		return (SingleFeatureUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameTypeEditPart) {

+			((SingleFeatureUnitNameTypeEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFeatureUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort4EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort3EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPortEditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFeatureUnitNameTypeEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort4EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleInputPort4EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort3EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((MultiInputPort3EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPortEditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPortEditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnitNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFeatureUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFeatureUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFeatureUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFeatureUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFeatureUnitLabelFigure.setText("SingleFeatureUnit");

+

+			this.add(fFigureSingleFeatureUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFeatureUnitLabelFigure() {

+			return fFigureSingleFeatureUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType2EditPart.java
new file mode 100644
index 0000000..3de5f87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitNameType2EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5029;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFeatureUnit_3038,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFeatureUnitNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType3EditPart.java
new file mode 100644
index 0000000..bdd24e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitNameType3EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5036;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFeatureUnit_3050,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFeatureUnitNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType4EditPart.java
new file mode 100644
index 0000000..1628cbe
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitNameType4EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5040;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFeatureUnit_3055,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFeatureUnitNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType5EditPart.java
new file mode 100644
index 0000000..bbff7ec
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameType5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitNameType5EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5044;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFeatureUnit_3061,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFeatureUnitNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameTypeEditPart.java
new file mode 100644
index 0000000..a4a344e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFeatureUnitNameTypeEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitNameTypeEditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5009;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFeatureUnit_3008,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFeatureUnitNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit2EditPart.java
new file mode 100644
index 0000000..bd23d69
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit2EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFilterUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFilterUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3040;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFilterUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFilterUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort5EditPart.VISUAL_ID:

+				case SingleOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitFigure getPrimaryShape() {

+		return (SingleFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType2EditPart) {

+			((SingleFilterUnitNameType2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFilterUnitNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFilterUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFilterUnitLabelFigure.setText("SingleFilterUnit");

+

+			this.add(fFigureSingleFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFilterUnitLabelFigure() {

+			return fFigureSingleFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit3EditPart.java
new file mode 100644
index 0000000..2c5aaa3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit3EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFilterUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFilterUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3052;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFilterUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFilterUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort5EditPart.VISUAL_ID:

+				case SingleOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitFigure getPrimaryShape() {

+		return (SingleFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType3EditPart) {

+			((SingleFilterUnitNameType3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFilterUnitNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFilterUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFilterUnitLabelFigure.setText("SingleFilterUnit");

+

+			this.add(fFigureSingleFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFilterUnitLabelFigure() {

+			return fFigureSingleFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit4EditPart.java
new file mode 100644
index 0000000..4b4b390
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit4EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFilterUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFilterUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3057;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFilterUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFilterUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort5EditPart.VISUAL_ID:

+				case SingleOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitFigure getPrimaryShape() {

+		return (SingleFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType4EditPart) {

+			((SingleFilterUnitNameType4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOt

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFilterUnitNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFilterUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFilterUnitLabelFigure.setText("SingleFilterUnit");

+

+			this.add(fFigureSingleFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFilterUnitLabelFigure() {

+			return fFigureSingleFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit5EditPart.java
new file mode 100644
index 0000000..f24a431
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnit5EditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFilterUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFilterUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3063;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFilterUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFilterUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort5EditPart.VISUAL_ID:

+				case SingleOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitFigure getPrimaryShape() {

+		return (SingleFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType5EditPart) {

+			((SingleFilterUnitNameType5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameType5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFilterUnitNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFilterUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFilterUnitLabelFigure.setText("SingleFilterUnit");

+

+			this.add(fFigureSingleFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFilterUnitLabelFigure() {

+			return fFigureSingleFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitEditPart.java
new file mode 100644
index 0000000..8ff5c12
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitEditPart.java
@@ -0,0 +1,350 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.policies.SingleFilterUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleFilterUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3016;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleFilterUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleFilterUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case MultiInputPort5EditPart.VISUAL_ID:

+				case SingleOutputPort2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createNodeShape() {

+		return primaryShape = new SingleFilterUnitFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitFigure getPrimaryShape() {

+		return (SingleFilterUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameTypeEditPart) {

+			((SingleFilterUnitNameTypeEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleFilterUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort5EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setCurrentSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.SOUTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleOutputPort2EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleFilterUnitNameTypeEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort5EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort5EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleOutputPort2EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((SingleOutputPort2EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleFilterUnitNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleFilterUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleFilterUnitLabelFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleFilterUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleFilterUnitLabelFigure = new WrappingLabel();

+			fFigureSingleFilterUnitLabelFigure.setText("SingleFilterUnit");

+

+			this.add(fFigureSingleFilterUnitLabelFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleFilterUnitLabelFigure() {

+			return fFigureSingleFilterUnitLabelFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType2EditPart.java
new file mode 100644
index 0000000..6c67a33
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitNameType2EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5031;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFilterUnit_3040,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFilterUnitNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType3EditPart.java
new file mode 100644
index 0000000..7c21250
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitNameType3EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5038;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFilterUnit_3052,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFilterUnitNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType4EditPart.java
new file mode 100644
index 0000000..294480a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitNameType4EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5042;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFilterUnit_3057,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFilterUnitNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType5EditPart.java
new file mode 100644
index 0000000..35e1f3a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameType5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitNameType5EditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5046;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFilterUnit_3063,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFilterUnitNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameTypeEditPart.java
new file mode 100644
index 0000000..3a08fe9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleFilterUnitNameTypeEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitNameTypeEditPart extends CompartmentEditPart

+		implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5016;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleFilterUnit_3016,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleFilterUnitNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort2EditPart.java
new file mode 100644
index 0000000..1088cc1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort2EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort2EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3001;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort3EditPart.java
new file mode 100644
index 0000000..7a91e6b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort3EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort3EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3005;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType3EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType3EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort4EditPart.java
new file mode 100644
index 0000000..4b92dd5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort4EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort4EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3009;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType4EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType4EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort5EditPart.java
new file mode 100644
index 0000000..1b3ccdc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort5EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort5EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3013;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType5EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType5EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort6EditPart.java
new file mode 100644
index 0000000..16ade48
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort6EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort6ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort6EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3023;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType6EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort7EditPart.java
new file mode 100644
index 0000000..c45e59f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort7EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort7ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort7EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3027;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort8EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort8EditPart.java
new file mode 100644
index 0000000..be653a5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort8EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort8ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort8EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3031;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort8EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort8ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType8EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType8EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType8EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort9EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort9EditPart.java
new file mode 100644
index 0000000..68878e5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPort9EditPart.java
@@ -0,0 +1,394 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.parts.SingleInputPortEditPart.SingleInputPortFigure;

+import comrel.diagram.edit.policies.SingleInputPort9ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPort9EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3035;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort9EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPort9ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameType9EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameType9EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameType9EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortEditPart.java
new file mode 100644
index 0000000..b68f865
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortEditPart.java
@@ -0,0 +1,403 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.InputPort;

+import comrel.diagram.edit.policies.SingleInputPortItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.InputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleInputPortEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2001;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleInputPortItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPortNameTypeEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleInputPortFigure figure = new SingleInputPortFigure();

+		InputPort port = (InputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortFigure getPrimaryShape() {

+		return (SingleInputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleInputPortNameTypeEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleInputPortNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof comrel.diagram.edit.parts.SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnTarget() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		types.add(ComrelElementTypes.MultiSinglePortMapping_4003);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForSource(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		} else if (relationshipType == ComrelElementTypes.MultiSinglePortMapping_4003) {

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	//	/**

+	//	 * @generated

+	//	 */

+	//	public class SingleInputPortFigure extends RectangleFigure {

+	//

+	//		/**

+	//		 * @generated

+	//		 */

+	//		public SingleInputPortFigure() {

+	//			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+	//					getMapMode().DPtoLP(20)));

+	//			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+	//					getMapMode().DPtoLP(5)));

+	//		}

+	//

+	//	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleInputPortFigure extends InputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType2EditPart.java
new file mode 100644
index 0000000..0fea0f1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType2EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType2EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5002;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType2EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3001,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType3EditPart.java
new file mode 100644
index 0000000..d188be9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType3EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType3EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5004;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType3EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3005,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType4EditPart.java
new file mode 100644
index 0000000..774b0a4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType4EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType4EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5006;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType4EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3009,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType5EditPart.java
new file mode 100644
index 0000000..0387113
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType5EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType5EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5010;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType5EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3013,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType6EditPart.java
new file mode 100644
index 0000000..7eb00d4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType6EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType6EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5020;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType6EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3023,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType7EditPart.java
new file mode 100644
index 0000000..067f8ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType7EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType7EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5022;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType7EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3027,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType8EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType8EditPart.java
new file mode 100644
index 0000000..42ed0cb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType8EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType8EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5024;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType8EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType8EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3031,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType8EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType9EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType9EditPart.java
new file mode 100644
index 0000000..2a2a5e3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameType9EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameType9EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5026;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameType9EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameType9EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_3035,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameType9EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameTypeEditPart.java
new file mode 100644
index 0000000..f92473b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleInputPortNameTypeEditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleInputPortNameTypeEditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5001;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleInputPortNameTypeEditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleInputPort_2001,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleInputPortNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleInputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleInputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleInputPortLabelFigure() {

+			this.setText("SingleInputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPort2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPort2EditPart.java
new file mode 100644
index 0000000..1b3f21b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPort2EditPart.java
@@ -0,0 +1,332 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.Ellipse;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.OutputPort;

+import comrel.diagram.edit.policies.SingleOutputPort2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.OutputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleOutputPort2EditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3018;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPort2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleOutputPort2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleOutputPortNameType2EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleOutputPortFigure figure = new SingleOutputPortFigure();

+		OutputPort port = (OutputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortFigure getPrimaryShape() {

+		return (SingleOutputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleOutputPortNameType2EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleOutputPortNameType2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleOutputPortFigure extends OutputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleOutputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortEditPart.java
new file mode 100644
index 0000000..e56b5f7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortEditPart.java
@@ -0,0 +1,332 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.draw2d.Ellipse;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.OutputPort;

+import comrel.diagram.edit.policies.SingleOutputPortItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.figures.OutputPortFigure;

+

+/**

+ * @generated

+ */

+public class SingleOutputPortEditPart extends BorderedBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3011;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				getPrimaryDragEditPolicy());

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleOutputPortItemSemanticEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleOutputPortNameTypeEditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy() {

+

+						protected List createSelectionHandles() {

+							MoveHandle mh = new MoveHandle(

+									(GraphicalEditPart) getHost());

+							mh.setBorder(null);

+							return Collections.singletonList(mh);

+						}

+					};

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleOutputPortFigure figure = new SingleOutputPortFigure();

+		OutputPort port = (OutputPort) this.resolveSemanticElement();

+		figure.setPort(port);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortFigure getPrimaryShape() {

+		return (SingleOutputPortFigure) primaryShape;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addBorderItem(IFigure borderItemContainer,

+			IBorderItemEditPart borderItemEditPart) {

+		if (borderItemEditPart instanceof SingleOutputPortNameTypeEditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.SOUTH);

+			locator.setBorderItemOffset(new Dimension(-20, -20));

+			borderItemContainer.add(borderItemEditPart.getFigure(), locator);

+		} else {

+			super.addBorderItem(borderItemContainer, borderItemEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(20, 20);

+

+		//FIXME: workaround for #154536

+		result.getBounds().setSize(result.getPreferredSize());

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleOutputPortNameTypeEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSource() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+		types.add(ComrelElementTypes.SinglePortMapping_4001);

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMARelTypesOnSourceAndTarget(

+			IGraphicalEditPart targetEditPart) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			types.add(ComrelElementTypes.SinglePortMapping_4001);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List<IElementType> getMATypesForTarget(IElementType relationshipType) {

+		LinkedList<IElementType> types = new LinkedList<IElementType>();

+		if (relationshipType == ComrelElementTypes.SinglePortMapping_4001) {

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+		}

+		return types;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SingleOutputPortFigure extends OutputPortFigure {

+

+		/**

+		 * @generated

+		 */

+		public SingleOutputPortFigure() {

+			this.setPreferredSize(new Dimension(getMapMode().DPtoLP(20),

+					getMapMode().DPtoLP(20)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortNameType2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortNameType2EditPart.java
new file mode 100644
index 0000000..2f91209
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortNameType2EditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleOutputPortNameType2EditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5015;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleOutputPortNameType2EditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortNameType2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleOutputPort_3018,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleOutputPortNameType2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleOutputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleOutputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleOutputPortLabelFigure() {

+			this.setText("SingleOutputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortNameTypeEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortNameTypeEditPart.java
new file mode 100644
index 0000000..8eb5a41
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleOutputPortNameTypeEditPart.java
@@ -0,0 +1,631 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleOutputPortNameTypeEditPart extends LabelEditPart implements

+		ITextAwareEditPart, IBorderItemEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5008;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	static {

+		registerSnapBackPosition(

+				ComrelVisualIDRegistry

+						.getType(comrel.diagram.edit.parts.SingleOutputPortNameTypeEditPart.VISUAL_ID),

+				new Point(0, 0));

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortNameTypeEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	public IBorderItemLocator getBorderItemLocator() {

+		IFigure parentFigure = getFigure().getParent();

+		if (parentFigure != null && parentFigure.getLayoutManager() != null) {

+			Object constraint = parentFigure.getLayoutManager().getConstraint(

+					getFigure());

+			return (IBorderItemLocator) constraint;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshBounds() {

+		int x = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_X())).intValue();

+		int y = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getLocation_Y())).intValue();

+		int width = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Width())).intValue();

+		int height = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE

+				.getSize_Height())).intValue();

+		getBorderItemLocator()

+				.setConstraint(new Rectangle(x, y, width, height));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		int posDot = -1;

+		int posDouble = -1;

+		posDot = text.lastIndexOf(".");

+		posDouble = text.indexOf(":");

+		if (posDot > -1 && posDouble > -1) {

+			String first = text.substring(0, posDouble + 1);

+			String second = text.substring(posDot + 1);

+			text = first + second;

+		}

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(IFigure figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleOutputPort_3011,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleOutputPortNameTypeEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		IFigure label = createFigurePrim();

+		defaultText = getLabelTextHelper(label);

+		return label;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigurePrim() {

+		return new SingleOutputPortLabelFigure();

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleOutputPortLabelFigure extends WrappingLabel {

+

+		/**

+		 * @generated

+		 */

+		public SingleOutputPortLabelFigure() {

+			this.setText("SingleOutputPort");

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SinglePortMappingEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SinglePortMappingEditPart.java
new file mode 100644
index 0000000..df7a1a0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SinglePortMappingEditPart.java
@@ -0,0 +1,98 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.Connection;

+import org.eclipse.draw2d.Graphics;

+import org.eclipse.draw2d.PolylineDecoration;

+import org.eclipse.draw2d.RotatableDecoration;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.PortMapping;

+import comrel.SinglePortMapping;

+import comrel.diagram.edit.policies.SinglePortMappingItemSemanticEditPolicy;

+import comrel.figures.PortMappingFigure;

+

+/**

+ * @generated

+ */

+public class SinglePortMappingEditPart extends ConnectionNodeEditPart implements

+		ITreeBranchEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 4001;

+

+	/**

+	 * @generated

+	 */

+	public SinglePortMappingEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SinglePortMappingItemSemanticEditPolicy());

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated NOT

+	 */

+

+	protected Connection createConnectionFigure() {

+		PortMapping mapping = (PortMapping) this.resolveSemanticElement();

+		SinglePortMappingFigure figure = new SinglePortMappingFigure();

+		figure.setMapping(mapping);

+		return figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SinglePortMappingFigure getPrimaryShape() {

+		return (SinglePortMappingFigure) getFigure();

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public class SinglePortMappingFigure extends PortMappingFigure {

+

+		SinglePortMapping mapping;

+

+		/**

+		 * @generated

+		 */

+		public SinglePortMappingFigure() {

+			this.setLineWidth(2);

+			this.setLineStyle(Graphics.LINE_DOT);

+

+			setTargetDecoration(createTargetDecoration());

+		}

+

+		/**

+		 * @generated

+		 */

+		private RotatableDecoration createTargetDecoration() {

+			PolylineDecoration df = new PolylineDecoration();

+			return df;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit2EditPart.java
new file mode 100644
index 0000000..974fb47
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit2EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart.SingleQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit2ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit2EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3022;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnit2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnit2CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict2EditPart) {

+			((SingleQueuedUnitNameTypeLblStrict2EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict2EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit3EditPart.java
new file mode 100644
index 0000000..1b24290
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit3EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart.SingleQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit3ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit3EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3042;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnit3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnit3CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict3EditPart) {

+			((SingleQueuedUnitNameTypeLblStrict3EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict3EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit4EditPart.java
new file mode 100644
index 0000000..34ee0ae
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit4EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart.SingleQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit4ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit4EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3054;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnit4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnit4CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict4EditPart) {

+			((SingleQueuedUnitNameTypeLblStrict4EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict4EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit5EditPart.java
new file mode 100644
index 0000000..97f7c8f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit5EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart.SingleQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit5ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit5EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3059;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnit5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnit5CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict5EditPart) {

+			((SingleQueuedUnitNameTypeLblStrict5EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict5EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit6EditPart.java
new file mode 100644
index 0000000..83b7266
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit6EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart.SingleQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit6ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit6EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3065;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnit6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnit6CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict6EditPart) {

+			((SingleQueuedUnitNameTypeLblStrict6EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict6EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit7EditPart.java
new file mode 100644
index 0000000..9684e87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnit7EditPart.java
@@ -0,0 +1,437 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.RefactoringUnit;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnit7ItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit7EditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 3067;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnit7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnit7CanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict7EditPart) {

+			((SingleQueuedUnitNameTypeLblStrict7EditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrict7EditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitEditPart.java
new file mode 100644
index 0000000..5e98ffe
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitEditPart.java
@@ -0,0 +1,452 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.MarginBorder;

+import org.eclipse.draw2d.PositionConstants;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.draw2d.Shape;

+import org.eclipse.draw2d.StackLayout;

+import org.eclipse.draw2d.geometry.Dimension;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.editpolicies.LayoutEditPolicy;

+import org.eclipse.gef.editpolicies.NonResizableEditPolicy;

+import org.eclipse.gef.requests.CreateRequest;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;

+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart.SingleQueuedUnitFigure;

+import comrel.diagram.edit.parts.custom.Labels;

+import comrel.diagram.edit.policies.OpenDiagramEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitItemSemanticEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitEditPart extends AbstractBorderedShapeEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 2004;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure contentPane;

+

+	/**

+	 * @generated

+	 */

+	protected IFigure primaryShape;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitCanonicalEditPolicy());

+		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());

+		installEditPolicy(EditPolicyRoles.OPEN_ROLE,

+				new OpenDiagramEditPolicy());

+		// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies

+		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected LayoutEditPolicy createLayoutEditPolicy() {

+		org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy lep = new org.eclipse.gmf.runtime.diagram.ui.editpolicies.LayoutEditPolicy() {

+

+			protected EditPolicy createChildEditPolicy(EditPart child) {

+				View childView = (View) child.getModel();

+				switch (ComrelVisualIDRegistry.getVisualID(childView)) {

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+					return new BorderItemSelectionEditPolicy();

+				}

+				EditPolicy result = child

+						.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+				if (result == null) {

+					result = new NonResizableEditPolicy();

+				}

+				return result;

+			}

+

+			protected Command getMoveChildrenCommand(Request request) {

+				return null;

+			}

+

+			protected Command getCreateCommand(CreateRequest request) {

+				return null;

+			}

+		};

+		return lep;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected IFigure createNodeShape() {

+		SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+		RectangleFigure compHelper = (RectangleFigure) figure.getChildren()

+				.get(1);

+		RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+		Labels.setLabels(compHelper, compRef, true);

+		//		RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+		//		unit.setFigure(figure);

+		return primaryShape = figure;

+	}

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitFigure getPrimaryShape() {

+		return (SingleQueuedUnitFigure) primaryShape;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean addFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrictEditPart) {

+			((SingleQueuedUnitNameTypeLblStrictEditPart) childEditPart)

+					.setLabel(getPrimaryShape()

+							.getFigureSingleQueuedUnitLabelFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.add(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((SingleInputPort6EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			BorderItemLocator locator = new BorderItemLocator(getMainFigure(),

+					PositionConstants.NORTH);

+			locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+			locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+			getBorderedFigure().getBorderItemContainer().add(

+					((MultiInputPort7EditPart) childEditPart).getFigure(),

+					locator);

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected boolean removeFixedChild(EditPart childEditPart) {

+		if (childEditPart instanceof SingleQueuedUnitNameTypeLblStrictEditPart) {

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart) {

+			IFigure pane = getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 

+			pane.remove(((SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart) childEditPart)

+					.getFigure());

+			return true;

+		}

+		if (childEditPart instanceof SingleInputPort6EditPart) {

+			getBorderedFigure().getBorderItemContainer().remove(

+					((SingleInputPort6EditPart) childEditPart).getFigure());

+			return true;

+		}

+		if (childEditPart instanceof MultiInputPort7EditPart) {

+			//			getBorderedFigure().getBorderItemContainer().remove(

+			//					((MultiInputPort7EditPart) childEditPart).getFigure());

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addChildVisual(EditPart childEditPart, int index) {

+		if (addFixedChild(childEditPart)) {

+			return;

+		}

+		super.addChildVisual(childEditPart, -1);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeChildVisual(EditPart childEditPart) {

+		if (removeFixedChild(childEditPart)) {

+			return;

+		}

+		super.removeChildVisual(childEditPart);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitHelperUnitsCompartmentFigure();

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart) {

+			return getPrimaryShape()

+					.getSingleQueuedUnitRefactoringUnitCompartmentFigure();

+		}

+		if (editPart instanceof IBorderItemEditPart) {

+			return getBorderedFigure().getBorderItemContainer();

+		}

+		return getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected NodeFigure createNodePlate() {

+		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40);

+		return result;

+	}

+

+	/**

+	 * Creates figure for this edit part.

+	 * 

+	 * Body of this method does not depend on settings in generation model

+	 * so you may safely remove <i>generated</i> tag and modify it.

+	 * 

+	 * @generated

+	 */

+	protected NodeFigure createMainFigure() {

+		NodeFigure figure = createNodePlate();

+		figure.setLayoutManager(new StackLayout());

+		IFigure shape = createNodeShape();

+		figure.add(shape);

+		contentPane = setupContentPane(shape);

+		return figure;

+	}

+

+	/**

+	 * Default implementation treats passed figure as content pane.

+	 * Respects layout one may have set for generated figure.

+	 * @param nodeShape instance of generated figure class

+	 * @generated

+	 */

+	protected IFigure setupContentPane(IFigure nodeShape) {

+		if (nodeShape.getLayoutManager() == null) {

+			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();

+			layout.setSpacing(5);

+			nodeShape.setLayoutManager(layout);

+		}

+		return nodeShape; // use nodeShape itself as contentPane

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure getContentPane() {

+		if (contentPane != null) {

+			return contentPane;

+		}

+		return super.getContentPane();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setForegroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setForegroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setBackgroundColor(Color color) {

+		if (primaryShape != null) {

+			primaryShape.setBackgroundColor(color);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineWidth(int width) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineWidth(width);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLineType(int style) {

+		if (primaryShape instanceof Shape) {

+			((Shape) primaryShape).setLineStyle(style);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public EditPart getPrimaryChildEditPart() {

+		return getChildBySemanticHint(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		if (event.getNotifier() == getModel()

+				&& EcorePackage.eINSTANCE.getEModelElement_EAnnotations()

+						.equals(event.getFeature())) {

+			handleMajorSemanticChange();

+		} else {

+			super.handleNotificationEvent(event);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public class SingleQueuedUnitFigure extends RoundedRectangle {

+

+		/**

+		 * @generated

+		 */

+		private WrappingLabel fFigureSingleQueuedUnitLabelFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		/**

+		 * @generated

+		 */

+		private RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+

+		/**

+		 * @generated

+		 */

+		public SingleQueuedUnitFigure() {

+			this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(8),

+					getMapMode().DPtoLP(8)));

+			this.setBorder(new MarginBorder(getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5), getMapMode().DPtoLP(5),

+					getMapMode().DPtoLP(5)));

+			createContents();

+		}

+

+		/**

+		 * @generated

+		 */

+		private void createContents() {

+

+			fFigureSingleQueuedUnitLabelFigure = new WrappingLabel();

+			fFigureSingleQueuedUnitLabelFigure.setText("SingleQueuedUnit");

+			fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new Dimension(

+					getMapMode().DPtoLP(10000), getMapMode().DPtoLP(50)));

+

+			this.add(fFigureSingleQueuedUnitLabelFigure);

+

+			fSingleQueuedUnitHelperUnitsCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);

+

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure = new RectangleFigure();

+			fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);

+

+			this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);

+

+		}

+

+		/**

+		 * @generated

+		 */

+		public WrappingLabel getFigureSingleQueuedUnitLabelFigure() {

+			return fFigureSingleQueuedUnitLabelFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {

+			return fSingleQueuedUnitHelperUnitsCompartmentFigure;

+		}

+

+		/**

+		 * @generated

+		 */

+		public RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {

+			return fSingleQueuedUnitRefactoringUnitCompartmentFigure;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict2EditPart.java
new file mode 100644
index 0000000..00d46a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict2EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrict2EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5076;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrict2EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_3022,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict3EditPart.java
new file mode 100644
index 0000000..5278048
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict3EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrict3EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5069;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrict3EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_3042,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict4EditPart.java
new file mode 100644
index 0000000..d5bfe9d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict4EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrict4EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5064;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrict4EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_3054,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict5EditPart.java
new file mode 100644
index 0000000..b5942f2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict5EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrict5EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5063;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrict5EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_3059,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict6EditPart.java
new file mode 100644
index 0000000..d394f93
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict6EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrict6EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5061;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrict6EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_3065,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict7EditPart.java
new file mode 100644
index 0000000..77e2a41
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrict7EditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrict7EditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5049;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrict7EditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_3067,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrictEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrictEditPart.java
new file mode 100644
index 0000000..80e6a96
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitNameTypeLblStrictEditPart.java
@@ -0,0 +1,576 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.geometry.Point;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.RunnableWithResult;

+import org.eclipse.gef.AccessibleEditPart;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.requests.DirectEditRequest;

+import org.eclipse.gef.tools.DirectEditManager;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.jface.viewers.ICellEditorValidator;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.accessibility.AccessibleEvent;

+import org.eclipse.swt.graphics.Color;

+import org.eclipse.swt.graphics.FontData;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.policies.ComrelTextSelectionEditPolicy;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitNameTypeLblStrictEditPart extends

+		CompartmentEditPart implements ITextAwareEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 5082;

+

+	/**

+	 * @generated

+	 */

+	private DirectEditManager manager;

+

+	/**

+	 * @generated

+	 */

+	private IParser parser;

+

+	/**

+	 * @generated

+	 */

+	private List<?> parserElements;

+

+	/**

+	 * @generated

+	 */

+	private String defaultText;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitNameTypeLblStrictEditPart(View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE,

+				new ComrelTextSelectionEditPolicy());

+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,

+				new LabelDirectEditPolicy());

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new CompositeRefactoringEditPart.NodeLabelDragPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelTextHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getText();

+		} else {

+			return ((Label) figure).getText();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelTextHelper(IFigure figure, String text) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setText(text);

+		} else {

+			((Label) figure).setText(text);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIconHelper(IFigure figure) {

+		if (figure instanceof WrappingLabel) {

+			return ((WrappingLabel) figure).getIcon();

+		} else {

+			return ((Label) figure).getIcon();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setLabelIconHelper(IFigure figure, Image icon) {

+		if (figure instanceof WrappingLabel) {

+			((WrappingLabel) figure).setIcon(icon);

+		} else {

+			((Label) figure).setIcon(icon);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabel(WrappingLabel figure) {

+		unregisterVisuals();

+		setFigure(figure);

+		defaultText = getLabelTextHelper(figure);

+		registerVisuals();

+		refreshVisuals();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getModelChildren() {

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject getParserElement() {

+		return resolveSemanticElement();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Image getLabelIcon() {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getLabelText() {

+		String text = null;

+		EObject parserElement = getParserElement();

+		if (parserElement != null && getParser() != null) {

+			text = getParser().getPrintString(

+					new EObjectAdapter(parserElement),

+					getParserOptions().intValue());

+		}

+		if (text == null || text.length() == 0) {

+			text = defaultText;

+		}

+		return text;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLabelText(String text) {

+		setLabelTextHelper(getFigure(), text);

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditText() {

+		if (getParserElement() == null || getParser() == null) {

+			return ""; //$NON-NLS-1$

+		}

+		return getParser().getEditString(

+				new EObjectAdapter(getParserElement()),

+				getParserOptions().intValue());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isEditable() {

+		return getParser() != null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICellEditorValidator getEditTextValidator() {

+		return new ICellEditorValidator() {

+

+			public String isValid(final Object value) {

+				if (value instanceof String) {

+					final EObject element = getParserElement();

+					final IParser parser = getParser();

+					try {

+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()

+								.runExclusive(

+										new RunnableWithResult.Impl<IParserEditStatus>() {

+

+											public void run() {

+												setResult(parser

+														.isValidEditString(

+																new EObjectAdapter(

+																		element),

+																(String) value));

+											}

+										});

+						return valid.getCode() == ParserEditStatus.EDITABLE ? null

+								: valid.getMessage();

+					} catch (InterruptedException ie) {

+						ie.printStackTrace();

+					}

+				}

+

+				// shouldn't get here

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor() {

+		if (getParserElement() == null || getParser() == null) {

+			return null;

+		}

+		return getParser().getCompletionProcessor(

+				new EObjectAdapter(getParserElement()));

+	}

+

+	/**

+	 * @generated

+	 */

+	public ParserOptions getParserOptions() {

+		return ParserOptions.NONE;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser() {

+		if (parser == null) {

+			parser = ComrelParserProvider

+					.getParser(

+							ComrelElementTypes.SingleQueuedUnit_2004,

+							getParserElement(),

+							ComrelVisualIDRegistry

+									.getType(comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		}

+		return parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected DirectEditManager getManager() {

+		if (manager == null) {

+			setManager(new TextDirectEditManager(this,

+					TextDirectEditManager.getTextCellEditorClass(this),

+					ComrelEditPartFactory.getTextCellEditorLocator(this)));

+		}

+		return manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setManager(DirectEditManager manager) {

+		this.manager = manager;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit() {

+		getManager().show();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEdit(Point eventLocation) {

+		if (getManager().getClass() == TextDirectEditManager.class) {

+			((TextDirectEditManager) getManager()).show(eventLocation

+					.getSWTPoint());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void performDirectEdit(char initialCharacter) {

+		if (getManager() instanceof TextDirectEditManager) {

+			((TextDirectEditManager) getManager()).show(initialCharacter);

+		} else {

+			performDirectEdit();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performDirectEditRequest(Request request) {

+		final Request theRequest = request;

+		try {

+			getEditingDomain().runExclusive(new Runnable() {

+

+				public void run() {

+					if (isActive() && isEditable()) {

+						if (theRequest

+								.getExtendedData()

+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {

+							Character initialChar = (Character) theRequest

+									.getExtendedData()

+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);

+							performDirectEdit(initialChar.charValue());

+						} else if ((theRequest instanceof DirectEditRequest)

+								&& (getEditText().equals(getLabelText()))) {

+							DirectEditRequest editRequest = (DirectEditRequest) theRequest;

+							performDirectEdit(editRequest.getLocation());

+						} else {

+							performDirectEdit();

+						}

+					}

+				}

+			});

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshVisuals() {

+		super.refreshVisuals();

+		refreshLabel();

+		refreshFont();

+		refreshFontColor();

+		refreshUnderline();

+		refreshStrikeThrough();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshLabel() {

+		setLabelTextHelper(getFigure(), getLabelText());

+		setLabelIconHelper(getFigure(), getLabelIcon());

+		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);

+		if (pdEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();

+		}

+		Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE);

+		if (sfEditPolicy instanceof ComrelTextSelectionEditPolicy) {

+			((ComrelTextSelectionEditPolicy) sfEditPolicy).refreshFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshUnderline() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextUnderline(style.isUnderline());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshStrikeThrough() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null && getFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getFigure()).setTextStrikeThrough(style

+					.isStrikeThrough());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFont() {

+		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(

+				NotationPackage.eINSTANCE.getFontStyle());

+		if (style != null) {

+			FontData fontData = new FontData(style.getFontName(),

+					style.getFontHeight(), (style.isBold() ? SWT.BOLD

+							: SWT.NORMAL)

+							| (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));

+			setFont(fontData);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFontColor(Color color) {

+		getFigure().setForegroundColor(color);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addSemanticListeners() {

+		if (getParser() instanceof ISemanticParser) {

+			EObject element = resolveSemanticElement();

+			parserElements = ((ISemanticParser) getParser())

+					.getSemanticElementsBeingParsed(element);

+			for (int i = 0; i < parserElements.size(); i++) {

+				addListenerFilter(

+						"SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$

+			}

+		} else {

+			super.addSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeSemanticListeners() {

+		if (parserElements != null) {

+			for (int i = 0; i < parserElements.size(); i++) {

+				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$

+			}

+		} else {

+			super.removeSemanticListeners();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AccessibleEditPart getAccessibleEditPart() {

+		if (accessibleEP == null) {

+			accessibleEP = new AccessibleGraphicalEditPart() {

+

+				public void getName(AccessibleEvent e) {

+					e.result = getLabelTextHelper(getFigure());

+				}

+			};

+		}

+		return accessibleEP;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getFontStyleOwnerView() {

+		return getPrimaryView();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void addNotationalListeners() {

+		super.addNotationalListeners();

+		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void removeNotationalListeners() {

+		super.removeNotationalListeners();

+		removeListenerFilter("PrimaryView"); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleNotificationEvent(Notification event) {

+		Object feature = event.getFeature();

+		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {

+			Integer c = (Integer) event.getNewValue();

+			setFontColor(DiagramColorRegistry.getInstance().getColor(c));

+		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(

+				feature)) {

+			refreshUnderline();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough()

+				.equals(feature)) {

+			refreshStrikeThrough();

+		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(

+				feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_FontName().equals(

+						feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Bold()

+						.equals(feature)

+				|| NotationPackage.eINSTANCE.getFontStyle_Italic().equals(

+						feature)) {

+			refreshFont();

+		} else {

+			if (getParser() != null

+					&& getParser().isAffectingEvent(event,

+							getParserOptions().intValue())) {

+				refreshLabel();

+			}

+			if (getParser() instanceof ISemanticParser) {

+				ISemanticParser modelParser = (ISemanticParser) getParser();

+				if (modelParser.areSemanticElementsAffected(null, event)) {

+					removeSemanticListeners();

+					if (resolveSemanticElement() != null) {

+						addSemanticListeners();

+					}

+					refreshLabel();

+				}

+			}

+		}

+		super.handleNotificationEvent(event);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFigure() {

+		// Parent should assign one using setLabel() method

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.java
new file mode 100644
index 0000000..16ceb2f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7027;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.java
new file mode 100644
index 0000000..45864b5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7043;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.java
new file mode 100644
index 0000000..f677401
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7045;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.java
new file mode 100644
index 0000000..07267bb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7049;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.java
new file mode 100644
index 0000000..9c4ffd3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7055;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.java
new file mode 100644
index 0000000..d8abf6b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7077;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.java
new file mode 100644
index 0000000..5fdfee5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7009;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.java
new file mode 100644
index 0000000..aedbcbd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7028;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.java
new file mode 100644
index 0000000..a4bdb67
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7044;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.java
new file mode 100644
index 0000000..3e69606
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7046;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.java
new file mode 100644
index 0000000..d5a009d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7050;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.java
new file mode 100644
index 0000000..0e89c78
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7056;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.java
new file mode 100644
index 0000000..81db4d7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7078;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.java
new file mode 100644
index 0000000..ccf2747
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.java
@@ -0,0 +1,85 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.parts;

+

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.gef.EditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy;

+import comrel.diagram.edit.policies.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart

+		extends ShapeCompartmentEditPart {

+

+	/**

+	 * @generated

+	 */

+	public static final int VISUAL_ID = 7010;

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart(

+			View view) {

+		super(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getCompartmentName() {

+		return Messages.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart_title;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IFigure createFigure() {

+		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super

+				.createFigure();

+		result.setTitleVisibility(false);

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void createDefaultEditPolicies() {

+		super.createDefaultEditPolicies();

+		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE,

+				new ResizableCompartmentEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.SEMANTIC_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy());

+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,

+				new CreationEditPolicy());

+		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,

+				new DragDropEditPolicy());

+		installEditPolicy(

+				EditPolicyRoles.CANONICAL_ROLE,

+				new SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setRatio(Double ratio) {

+		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {

+			super.setRatio(ratio);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/changes.txt b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/changes.txt
new file mode 100644
index 0000000..a74e7f6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/changes.txt
@@ -0,0 +1,43 @@
+----------------------

+createNodeShape (rest)

+----------------------

+

+MultiInputPortFigure figure = new MultiInputPortFigure();

+InputPort port = (InputPort) this.resolveSemanticElement();

+figure.setPort(port);

+return primaryShape = figure;

+

+

+----------------------

+createNodeShape (last)

+----------------------

+

+SingleQueuedUnitFigure figure = new SingleQueuedUnitFigure();

+RectangleFigure compHelper = (RectangleFigure) figure.getChildren().get(1);

+RectangleFigure compRef = (RectangleFigure) figure.getChildren().get(2);

+Labels.setLabels(compHelper, compRef, true);

+RefactoringUnit unit = (RefactoringUnit) this.resolveSemanticElement();

+unit.setFigure(figure);

+return primaryShape = figure;

+

+

+----------------

+addFixedChildren

+----------------

+

+-> bei InputPorts

+

+PositionConstants.NORTH);

+locator.setCurrentSideOfParent(PositionConstants.NORTH); // Position des Ports

+locator.setPreferredSideOfParent(PositionConstants.NORTH); // Position des Ports

+

+

+----------------

+removeFixedChild

+----------------

+

+-> bei MULTI-InputPorts

+

+komplett auskommentieren

+

+

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/custom/Labels.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/custom/Labels.java
new file mode 100644
index 0000000..eedf530
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/parts/custom/Labels.java
@@ -0,0 +1,46 @@
+package comrel.diagram.edit.parts.custom;

+

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.geometry.Dimension;

+

+/**

+ * Selbstdefinierte Labels

+ * @author Gerrit

+ *

+ */

+public class Labels {

+

+	public static Label getHelperLabel(){

+		Label l = new Label();

+		l.setText("Helper Units");

+		return l;

+	}

+	

+	public static Label getRefactoringUnitLabel(boolean singular){

+		String text = "Refactoring Unit";

+		if(!singular) {

+			text += "s";

+		}

+		Label l = new Label();

+		l.setText(text);

+		return l;

+	}

+	

+	

+	public static void setLabels(RectangleFigure compHelper, RectangleFigure compRef,boolean singular) {

+		Dimension maximumSize = new Dimension();

+		maximumSize.height = 15;

+		maximumSize.width = compHelper.getMaximumSize().width;

+

+		Label helperLabel = getHelperLabel();

+		helperLabel.setMaximumSize(maximumSize);

+		compHelper.add(helperLabel);

+		compHelper.setToolTip(getHelperLabel());

+		Label refLabel = getRefactoringUnitLabel(singular);

+		refLabel.setMaximumSize(maximumSize);

+

+		compRef.add(refLabel);

+		compRef.setToolTip(getRefactoringUnitLabel(singular));

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..72e1239
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit2CanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3034SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3034SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a8fb3d6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_3034);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..285cd7e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit3CanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3049SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3049SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..7f0fc18
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_3049);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..e168963
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit4CanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3068SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3068SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8131f79
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_3068);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..30753e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit5CanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3074SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3074SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..6c2dc0f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_3074);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit6CanonicalEditPolicy.java
new file mode 100644
index 0000000..a5a7760
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit6CanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit6CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3077SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3077SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..faf8f99
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit6ItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnit6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_3077);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit7CanonicalEditPolicy.java
new file mode 100644
index 0000000..f33392b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit7CanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnit7CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3078SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_3078SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4778387
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnit7ItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnit7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnit7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_3078);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..1dd32b7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnitCanonicalEditPolicy.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class AtomicUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getAtomicUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_2007SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return SingleInputPort9EditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getAtomicUnit_2007SemanticChildren((View) getHost().getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8f01f39
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/AtomicUnitItemSemanticEditPolicy.java
@@ -0,0 +1,121 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SingleInputPort9CreateCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class AtomicUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public AtomicUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.AtomicUnit_2007);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3035 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..e9011e3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit2CanonicalEditPolicy.java
@@ -0,0 +1,179 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit2CanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3003SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3003SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..9bf8852
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..fc3415f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit3CanonicalEditPolicy.java
@@ -0,0 +1,179 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit3CanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3007SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3007SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..45ef38b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3007);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..967ac63
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit4CanonicalEditPolicy.java
@@ -0,0 +1,179 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit4CanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3025SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3025SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1fc6b4e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3025);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..3709caf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit5CanonicalEditPolicy.java
@@ -0,0 +1,179 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit5CanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3029SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3029SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..be748f7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3029);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit6CanonicalEditPolicy.java
new file mode 100644
index 0000000..910d9a4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit6CanonicalEditPolicy.java
@@ -0,0 +1,179 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit6CanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3033SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3033SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d86d4af
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit6ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3033);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit7CanonicalEditPolicy.java
new file mode 100644
index 0000000..e09d849
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit7CanonicalEditPolicy.java
@@ -0,0 +1,179 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit7CanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3047SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_3047SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..2d5b6e3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnit7ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnit7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnit7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3047);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..5a9d565
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCartesianQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_2002SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort2EditPart.VISUAL_ID

+				|| visualID == MultiInputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnit_2002SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..bfd28d1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7003SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7003SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b83134d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..53dbe90
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7007SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7007SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b09ffb6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3007);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..9a0cf91
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7011SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7011SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c1a5480
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3025);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..6f0c428
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7015SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7015SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b32cac5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3029);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..43031e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7021SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7021SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..3169a37
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3033);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..3289ad3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7039SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7039SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ebf2776
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3047);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..17409fb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7001SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+		case SingleFilterUnitEditPart.VISUAL_ID:

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7001SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1242152
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_2002);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3008 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3012 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3016 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3019 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..5b08273
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7004SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7004SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..206c2d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..252cbfd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7008SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7008SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ff08a3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3007);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..5c3a9ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7012SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7012SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..7f1e506
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3025);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..78cf230
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7016SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7016SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..44ba2ab
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3029);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..3b1b22a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7022SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7022SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f789470
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3033);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..90d7e1e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7040SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7040SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..db05e99
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_3047);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..12c816c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7002SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+		case SequentialUnit2EditPart.VISUAL_ID:

+		case ConditionalUnit2EditPart.VISUAL_ID:

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7002SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..fd82b00
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit2CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit2CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit2CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_2002);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3003 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3004 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3022 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3026 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3030 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3034 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4d79cb6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CartesianQueuedUnitItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort2CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CartesianQueuedUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CartesianQueuedUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CartesianQueuedUnit_2002);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3002 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnitEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CompositeRefactoringCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CompositeRefactoringCanonicalEditPolicy.java
new file mode 100644
index 0000000..f954d7a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CompositeRefactoringCanonicalEditPolicy.java
@@ -0,0 +1,1402 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.AtomicUnitEditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart;

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitEditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitEditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPortEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelLinkDescriptor;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class CompositeRefactoringCanonicalEditPolicy extends

+		CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getModelRefactoring_InputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getCompositeRefactoring_MainRefactoringUnit());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCompositeRefactoring_1000SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		if (view.getEAnnotation("Shortcut") != null) { //$NON-NLS-1$

+			return ComrelDiagramUpdater.isShortcutOrphaned(view);

+		}

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleInputPortEditPart.VISUAL_ID:

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+		case SequentialUnitEditPart.VISUAL_ID:

+		case ConditionalUnitEditPart.VISUAL_ID:

+		case AtomicUnitEditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getCompositeRefactoring_1000SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+			if (v.getEAnnotation("Shortcut") != null && ComrelDiagramUpdater.isShortcutOrphaned(v)) { //$NON-NLS-1$

+				orphaned.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+

+		Collection<IAdaptable> createdConnectionViews = refreshConnections();

+

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		createdViews.addAll(createdConnectionViews);

+

+		makeViewsImmutable(createdViews);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<IAdaptable> refreshConnections() {

+		Map<EObject, View> domain2NotationMap = new HashMap<EObject, View>();

+		Collection<ComrelLinkDescriptor> linkDescriptors = collectAllLinks(

+				getDiagram(), domain2NotationMap);

+		Collection existingLinks = new LinkedList(getDiagram().getEdges());

+		for (Iterator linksIterator = existingLinks.iterator(); linksIterator

+				.hasNext();) {

+			Edge nextDiagramLink = (Edge) linksIterator.next();

+			int diagramLinkVisualID = ComrelVisualIDRegistry

+					.getVisualID(nextDiagramLink);

+			if (diagramLinkVisualID == -1) {

+				if (nextDiagramLink.getSource() != null

+						&& nextDiagramLink.getTarget() != null) {

+					linksIterator.remove();

+				}

+				continue;

+			}

+			EObject diagramLinkObject = nextDiagramLink.getElement();

+			EObject diagramLinkSrc = nextDiagramLink.getSource().getElement();

+			EObject diagramLinkDst = nextDiagramLink.getTarget().getElement();

+			for (Iterator<ComrelLinkDescriptor> linkDescriptorsIterator = linkDescriptors

+					.iterator(); linkDescriptorsIterator.hasNext();) {

+				ComrelLinkDescriptor nextLinkDescriptor = linkDescriptorsIterator

+						.next();

+				if (diagramLinkObject == nextLinkDescriptor.getModelElement()

+						&& diagramLinkSrc == nextLinkDescriptor.getSource()

+						&& diagramLinkDst == nextLinkDescriptor

+								.getDestination()

+						&& diagramLinkVisualID == nextLinkDescriptor

+								.getVisualID()) {

+					linksIterator.remove();

+					linkDescriptorsIterator.remove();

+					break;

+				}

+			}

+		}

+		deleteViews(existingLinks.iterator());

+		return createConnections(linkDescriptors, domain2NotationMap);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<ComrelLinkDescriptor> collectAllLinks(View view,

+			Map<EObject, View> domain2NotationMap) {

+		if (!CompositeRefactoringEditPart.MODEL_ID

+				.equals(ComrelVisualIDRegistry.getModelID(view))) {

+			return Collections.emptyList();

+		}

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case CompositeRefactoringEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCompositeRefactoring_1000ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPortEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_2001ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_2002ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_2003ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_2004ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_2005ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_2006ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_2007ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3001ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPortEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3002ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_3003ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_3004ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3005ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3006ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_3007ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFeatureUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFeatureUnit_3008ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3009ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3010ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleOutputPortEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleOutputPort_3011ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFeatureUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFeatureUnit_3012ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3013ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3014ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiOutputPortEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiOutputPort_3015ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFilterUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFilterUnit_3016ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3017ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleOutputPort2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleOutputPort_3018ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFilterUnitEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFilterUnit_3019ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3020ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiOutputPort2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiOutputPort_3021ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_3022ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3023ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3024ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_3025ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_3026ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3027ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort8EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3028ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_3029ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_3030ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort8EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3031ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiInputPort9EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiInputPort_3032ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnit6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_3033ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_3034ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleInputPort9EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleInputPort_3035ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_3036ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_3037ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFeatureUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFeatureUnit_3038ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFeatureUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFeatureUnit_3039ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFilterUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFilterUnit_3040ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFilterUnit2EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFilterUnit_3041ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_3042ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_3043ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_3044ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnit6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_3045ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_3046ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case CartesianQueuedUnit7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getCartesianQueuedUnit_3047ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ParallelQueuedUnit7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getParallelQueuedUnit_3048ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_3049ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFeatureUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFeatureUnit_3050ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFeatureUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFeatureUnit_3051ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFilterUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFilterUnit_3052ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFilterUnit3EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFilterUnit_3053ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_3054ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFeatureUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFeatureUnit_3055ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFeatureUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFeatureUnit_3056ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFilterUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFilterUnit_3057ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFilterUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFilterUnit_3058ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_3059ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_3060ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFeatureUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFeatureUnit_3061ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFeatureUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFeatureUnit_3062ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleFilterUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleFilterUnit_3063ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiFilterUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiFilterUnit_3064ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnit6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_3065ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_3066ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SingleQueuedUnit7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSingleQueuedUnit_3067ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnit4EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_3068ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_3069ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnit6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_3070ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_3071ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnit6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_3072ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SequentialUnit7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSequentialUnit_3073ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnit5EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_3074ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionalUnit7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionalUnit_3075ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case ConditionCheckEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getConditionCheck_3076ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnit6EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_3077ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case AtomicUnit7EditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getAtomicUnit_3078ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case SinglePortMappingEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getSinglePortMapping_4001ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiPortMappingEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiPortMapping_4002ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		case MultiSinglePortMappingEditPart.VISUAL_ID: {

+			if (!domain2NotationMap.containsKey(view.getElement())) {

+				result.addAll(ComrelDiagramUpdater

+						.getMultiSinglePortMapping_4003ContainedLinks(view));

+			}

+			if (!domain2NotationMap.containsKey(view.getElement())

+					|| view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$

+				domain2NotationMap.put(view.getElement(), view);

+			}

+			break;

+		}

+		}

+		for (Iterator children = view.getChildren().iterator(); children

+				.hasNext();) {

+			result.addAll(collectAllLinks((View) children.next(),

+					domain2NotationMap));

+		}

+		for (Iterator edges = view.getSourceEdges().iterator(); edges.hasNext();) {

+			result.addAll(collectAllLinks((View) edges.next(),

+					domain2NotationMap));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<IAdaptable> createConnections(

+			Collection<ComrelLinkDescriptor> linkDescriptors,

+			Map<EObject, View> domain2NotationMap) {

+		LinkedList<IAdaptable> adapters = new LinkedList<IAdaptable>();

+		for (ComrelLinkDescriptor nextLinkDescriptor : linkDescriptors) {

+			EditPart sourceEditPart = getEditPart(

+					nextLinkDescriptor.getSource(), domain2NotationMap);

+			EditPart targetEditPart = getEditPart(

+					nextLinkDescriptor.getDestination(), domain2NotationMap);

+			if (sourceEditPart == null || targetEditPart == null) {

+				continue;

+			}

+			CreateConnectionViewRequest.ConnectionViewDescriptor descriptor = new CreateConnectionViewRequest.ConnectionViewDescriptor(

+					nextLinkDescriptor.getSemanticAdapter(),

+					ComrelVisualIDRegistry.getType(nextLinkDescriptor

+							.getVisualID()), ViewUtil.APPEND, false,

+					((IGraphicalEditPart) getHost())

+							.getDiagramPreferencesHint());

+			CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(

+					descriptor);

+			ccr.setType(RequestConstants.REQ_CONNECTION_START);

+			ccr.setSourceEditPart(sourceEditPart);

+			sourceEditPart.getCommand(ccr);

+			ccr.setTargetEditPart(targetEditPart);

+			ccr.setType(RequestConstants.REQ_CONNECTION_END);

+			Command cmd = targetEditPart.getCommand(ccr);

+			if (cmd != null && cmd.canExecute()) {

+				executeCommand(cmd);

+				IAdaptable viewAdapter = (IAdaptable) ccr.getNewObject();

+				if (viewAdapter != null) {

+					adapters.add(viewAdapter);

+				}

+			}

+		}

+		return adapters;

+	}

+

+	/**

+	 * @generated

+	 */

+	private EditPart getEditPart(EObject domainModelElement,

+			Map<EObject, View> domain2NotationMap) {

+		View view = (View) domain2NotationMap.get(domainModelElement);

+		if (view != null) {

+			return (EditPart) getHost().getViewer().getEditPartRegistry()

+					.get(view);

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Diagram getDiagram() {

+		return ((View) getHost().getModel()).getDiagram();

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CompositeRefactoringItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CompositeRefactoringItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1d7ed72
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/CompositeRefactoringItemSemanticEditPolicy.java
@@ -0,0 +1,91 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.emf.commands.core.commands.DuplicateEObjectsCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest;

+

+import comrel.diagram.edit.commands.AtomicUnitCreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnitCreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnitCreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnitCreateCommand;

+import comrel.diagram.edit.commands.SequentialUnitCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnitCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class CompositeRefactoringItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public CompositeRefactoringItemSemanticEditPolicy() {

+		super(ComrelElementTypes.CompositeRefactoring_1000);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_2001 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPortCreateCommand(req));

+		}

+		if (ComrelElementTypes.CartesianQueuedUnit_2002 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_2003 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_2004 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_2005 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_2006 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnitCreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_2007 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnitCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDuplicateCommand(DuplicateElementsRequest req) {

+		TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost())

+				.getEditingDomain();

+		return getGEFWrapper(new DuplicateAnythingCommand(editingDomain, req));

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class DuplicateAnythingCommand extends

+			DuplicateEObjectsCommand {

+

+		/**

+		 * @generated

+		 */

+		public DuplicateAnythingCommand(

+				TransactionalEditingDomain editingDomain,

+				DuplicateElementsRequest req) {

+			super(editingDomain, req.getLabel(), req

+					.getElementsToBeDuplicated(), req

+					.getAllDuplicatedElementsMap());

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelBaseItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelBaseItemSemanticEditPolicy.java
new file mode 100644
index 0000000..7a4e5bb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelBaseItemSemanticEditPolicy.java
@@ -0,0 +1,607 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+

+import org.eclipse.emf.ecore.EClassifier;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.commands.UnexecutableCommand;

+import org.eclipse.gef.requests.ReconnectRequest;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.SemanticEditPolicy;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.GetEditContextRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.CompositeUnit;

+import comrel.ComrelPackage;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MultiInputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+import comrel.MultiSinglePortMapping;

+import comrel.OutputPort;

+import comrel.PortMapping;

+import comrel.QueuedUnit;

+import comrel.RefactoringUnit;

+import comrel.SingleInputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+import comrel.diagram.edit.helpers.ComrelBaseEditHelper;

+import comrel.diagram.expressions.ComrelOCLFactory;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ComrelBaseItemSemanticEditPolicy extends SemanticEditPolicy {

+

+	/**

+	 * Extended request data key to hold editpart visual id.

+	 * @generated

+	 */

+	public static final String VISUAL_ID_KEY = "visual_id"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	private final IElementType myElementType;

+

+	/**

+	 * @generated

+	 */

+	protected ComrelBaseItemSemanticEditPolicy(IElementType elementType) {

+		myElementType = elementType;

+	}

+

+	/**

+	 * Extended request data key to hold editpart visual id.

+	 * Add visual id of edited editpart to extended data of the request

+	 * so command switch can decide what kind of diagram element is being edited.

+	 * It is done in those cases when it's not possible to deduce diagram

+	 * element kind from domain element.

+	 * 

+	 * @generated

+	 */

+	public Command getCommand(Request request) {

+		if (request instanceof ReconnectRequest) {

+			Object view = ((ReconnectRequest) request).getConnectionEditPart()

+					.getModel();

+			if (view instanceof View) {

+				Integer id = new Integer(

+						ComrelVisualIDRegistry.getVisualID((View) view));

+				request.getExtendedData().put(VISUAL_ID_KEY, id);

+			}

+		}

+		return super.getCommand(request);

+	}

+

+	/**

+	 * Returns visual id from request parameters.

+	 * @generated

+	 */

+	protected int getVisualID(IEditCommandRequest request) {

+		Object id = request.getParameter(VISUAL_ID_KEY);

+		return id instanceof Integer ? ((Integer) id).intValue() : -1;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getSemanticCommand(IEditCommandRequest request) {

+		IEditCommandRequest completedRequest = completeRequest(request);

+		Command semanticCommand = getSemanticCommandSwitch(completedRequest);

+		semanticCommand = getEditHelperCommand(completedRequest,

+				semanticCommand);

+		if (completedRequest instanceof DestroyRequest) {

+			DestroyRequest destroyRequest = (DestroyRequest) completedRequest;

+			return shouldProceed(destroyRequest) ? addDeleteViewCommand(

+					semanticCommand, destroyRequest) : null;

+		}

+		return semanticCommand;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command addDeleteViewCommand(Command mainCommand,

+			DestroyRequest completedRequest) {

+		Command deleteViewCommand = getGEFWrapper(new DeleteCommand(

+				getEditingDomain(), (View) getHost().getModel()));

+		return mainCommand == null ? deleteViewCommand : mainCommand

+				.chain(deleteViewCommand);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Command getEditHelperCommand(IEditCommandRequest request,

+			Command editPolicyCommand) {

+		if (editPolicyCommand != null) {

+			ICommand command = editPolicyCommand instanceof ICommandProxy ? ((ICommandProxy) editPolicyCommand)

+					.getICommand() : new CommandProxy(editPolicyCommand);

+			request.setParameter(ComrelBaseEditHelper.EDIT_POLICY_COMMAND,

+					command);

+		}

+		IElementType requestContextElementType = getContextElementType(request);

+		request.setParameter(ComrelBaseEditHelper.CONTEXT_ELEMENT_TYPE,

+				requestContextElementType);

+		ICommand command = requestContextElementType.getEditCommand(request);

+		request.setParameter(ComrelBaseEditHelper.EDIT_POLICY_COMMAND, null);

+		request.setParameter(ComrelBaseEditHelper.CONTEXT_ELEMENT_TYPE, null);

+		if (command != null) {

+			if (!(command instanceof CompositeTransactionalCommand)) {

+				command = new CompositeTransactionalCommand(getEditingDomain(),

+						command.getLabel()).compose(command);

+			}

+			return new ICommandProxy(command);

+		}

+		return editPolicyCommand;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IElementType getContextElementType(IEditCommandRequest request) {

+		IElementType requestContextElementType = ComrelElementTypes

+				.getElementType(getVisualID(request));

+		return requestContextElementType != null ? requestContextElementType

+				: myElementType;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getSemanticCommandSwitch(IEditCommandRequest req) {

+		if (req instanceof CreateRelationshipRequest) {

+			return getCreateRelationshipCommand((CreateRelationshipRequest) req);

+		} else if (req instanceof CreateElementRequest) {

+			return getCreateCommand((CreateElementRequest) req);

+		} else if (req instanceof ConfigureRequest) {

+			return getConfigureCommand((ConfigureRequest) req);

+		} else if (req instanceof DestroyElementRequest) {

+			return getDestroyElementCommand((DestroyElementRequest) req);

+		} else if (req instanceof DestroyReferenceRequest) {

+			return getDestroyReferenceCommand((DestroyReferenceRequest) req);

+		} else if (req instanceof DuplicateElementsRequest) {

+			return getDuplicateCommand((DuplicateElementsRequest) req);

+		} else if (req instanceof GetEditContextRequest) {

+			return getEditContextCommand((GetEditContextRequest) req);

+		} else if (req instanceof MoveRequest) {

+			return getMoveCommand((MoveRequest) req);

+		} else if (req instanceof ReorientReferenceRelationshipRequest) {

+			return getReorientReferenceRelationshipCommand((ReorientReferenceRelationshipRequest) req);

+		} else if (req instanceof ReorientRelationshipRequest) {

+			return getReorientRelationshipCommand((ReorientRelationshipRequest) req);

+		} else if (req instanceof SetRequest) {

+			return getSetCommand((SetRequest) req);

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getConfigureCommand(ConfigureRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getSetCommand(SetRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getEditContextCommand(GetEditContextRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDuplicateCommand(DuplicateElementsRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getMoveCommand(MoveRequest req) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getReorientReferenceRelationshipCommand(

+			ReorientReferenceRelationshipRequest req) {

+		return UnexecutableCommand.INSTANCE;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		return UnexecutableCommand.INSTANCE;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected final Command getGEFWrapper(ICommand cmd) {

+		return new ICommandProxy(cmd);

+	}

+

+	/**

+	 * Returns editing domain from the host edit part.

+	 * @generated

+	 */

+	protected TransactionalEditingDomain getEditingDomain() {

+		return ((IGraphicalEditPart) getHost()).getEditingDomain();

+	}

+

+	/**

+	 * Clean all shortcuts to the host element from the same diagram

+	 * @generated

+	 */

+	protected void addDestroyShortcutsCommand(ICompositeCommand cmd, View view) {

+		assert view.getEAnnotation("Shortcut") == null; //$NON-NLS-1$

+		for (Iterator it = view.getDiagram().getChildren().iterator(); it

+				.hasNext();) {

+			View nextView = (View) it.next();

+			if (nextView.getEAnnotation("Shortcut") == null || !nextView.isSetElement() || nextView.getElement() != view.getElement()) { //$NON-NLS-1$

+				continue;

+			}

+			cmd.add(new DeleteCommand(getEditingDomain(), nextView));

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public static LinkConstraints getLinkConstraints() {

+		LinkConstraints cached = ComrelDiagramEditorPlugin.getInstance()

+				.getLinkConstraints();

+		if (cached == null) {

+			ComrelDiagramEditorPlugin.getInstance().setLinkConstraints(

+					cached = new LinkConstraints());

+		}

+		return cached;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static class LinkConstraints {

+

+		/**

+		 * @generated

+		 */

+		LinkConstraints() {

+			// use static method #getLinkConstraints() to access instance

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean canCreateSinglePortMapping_4001(

+				CompositeRefactoring container, SinglePort source,

+				SingleInputPort target) {

+			return canExistSinglePortMapping_4001(container, null, source,

+					target);

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean canCreateMultiPortMapping_4002(

+				CompositeRefactoring container, MultiPort source,

+				MultiInputPort target) {

+			return canExistMultiPortMapping_4002(container, null, source,

+					target);

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean canCreateMultiSinglePortMapping_4003(

+				CompositeRefactoring container, MultiPort source,

+				SingleInputPort target) {

+			return canExistMultiSinglePortMapping_4003(container, null, source,

+					target);

+		}

+

+		/**

+		 * @generated NOT

+		 */

+		public boolean canExistSinglePortMapping_4001(

+				CompositeRefactoring container, SinglePortMapping linkInstance,

+				SinglePort source, SingleInputPort target) {

+			try {

+				if (source == null) {

+					return true;

+				} else if (!singlePortMappingRules(container, source, target)) {

+					return false;

+				}

+

+				else {

+					Map<String, EClassifier> env = Collections

+							.<String, EClassifier> singletonMap(

+									"oppositeEnd", ComrelPackage.eINSTANCE.getSingleInputPort()); //$NON-NLS-1$

+					Object sourceVal = ComrelOCLFactory.getExpression(0,

+							ComrelPackage.eINSTANCE.getSinglePort(), env)

+							.evaluate(

+									source,

+									Collections.singletonMap(

+											"oppositeEnd", target)); //$NON-NLS-1$

+					if (false == sourceVal instanceof Boolean

+							|| !((Boolean) sourceVal).booleanValue()) {

+						return false;

+					} // else fall-through

+				}

+				return true;

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Link constraint evaluation error", e); //$NON-NLS-1$

+				return false;

+			}

+		}

+

+		/**

+		 * @generated NOT

+		 */

+		public boolean canExistMultiPortMapping_4002(

+				CompositeRefactoring container, MultiPortMapping linkInstance,

+				MultiPort source, MultiInputPort target) {

+			try {

+				if (source == null) {

+					return true;

+				} else if (!multiPortMappingRules(container, source, target)) {

+					return false;

+				}

+

+				else {

+					Map<String, EClassifier> env = Collections

+							.<String, EClassifier> singletonMap(

+									"oppositeEnd", ComrelPackage.eINSTANCE.getMultiInputPort()); //$NON-NLS-1$

+					Object sourceVal = ComrelOCLFactory.getExpression(1,

+							ComrelPackage.eINSTANCE.getMultiPort(), env)

+							.evaluate(

+									source,

+									Collections.singletonMap(

+											"oppositeEnd", target)); //$NON-NLS-1$

+					if (false == sourceVal instanceof Boolean

+							|| !((Boolean) sourceVal).booleanValue()) {

+						return false;

+					} // else fall-through

+				}

+				return true;

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Link constraint evaluation error", e); //$NON-NLS-1$

+				return false;

+			}

+		}

+

+		/**

+		 * @generated NOT

+		 */

+		public boolean canExistMultiSinglePortMapping_4003(

+				CompositeRefactoring container,

+				MultiSinglePortMapping linkInstance, MultiPort source,

+				SingleInputPort target) {

+			try {

+				if (source == null) {

+					return true;

+				} else if (!multiSinglePortMappingRules(container, source,

+						target)) {

+					return false;

+				}

+

+				else {

+					Map<String, EClassifier> env = Collections

+							.<String, EClassifier> singletonMap(

+									"oppositeEnd", ComrelPackage.eINSTANCE.getSingleInputPort()); //$NON-NLS-1$

+					Object sourceVal = ComrelOCLFactory.getExpression(2,

+							ComrelPackage.eINSTANCE.getMultiPort(), env)

+							.evaluate(

+									source,

+									Collections.singletonMap(

+											"oppositeEnd", target)); //$NON-NLS-1$

+					if (false == sourceVal instanceof Boolean

+							|| !((Boolean) sourceVal).booleanValue()) {

+						return false;

+					} // else fall-through

+				}

+				return true;

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Link constraint evaluation error", e); //$NON-NLS-1$

+				return false;

+			}

+		}

+

+		private static boolean singlePortMappingRules(

+				comrel.CompositeRefactoring container, comrel.Port source,

+				comrel.InputPort target) {

+			boolean result = true;

+			result &= sameType(container, source, target);

+			result &= rightEbene(container, source, target);

+			result &= onlyOneInput(container, source, target);

+			return result;

+		}

+

+		private static boolean multiPortMappingRules(

+				comrel.CompositeRefactoring container, comrel.Port source,

+				comrel.InputPort target) {

+			boolean result = true;

+			result &= sameType(container, source, target);

+			result &= rightEbene(container, source, target);

+			result &= onlyOneInput(container, source, target);

+			return result;

+		}

+

+		private static boolean multiSinglePortMappingRules(

+				comrel.CompositeRefactoring container, comrel.Port source,

+				comrel.InputPort target) {

+			boolean result = true;

+			result &= rightSourceTargetType(container, source, target);

+			result &= rightEbene(container, source, target);

+			result &= onlyOneInput(container, source, target);

+			result &= sameType(container, source, target);

+			return result;

+		}

+

+		private static boolean rightSourceTargetType(

+				comrel.CompositeRefactoring container, comrel.Port source,

+				comrel.InputPort target) {

+			boolean result = true;

+			if (source != null) {

+				result &= (source instanceof InputPort);

+				result &= (source.eContainer() instanceof QueuedUnit);

+			}

+			return result;

+		}

+

+		private static boolean sameType(comrel.CompositeRefactoring container,

+				comrel.Port source, comrel.InputPort target) {

+			boolean result = true;

+			if (source != null && target != null) {

+				if (source.getType() != null && target.getType() != null) {

+					result = source.getType().equals(target.getType());

+				} else {

+					result = true;

+				}

+			}

+			return result;

+		}

+

+	}

+

+	private static boolean rightEbene(comrel.CompositeRefactoring container,

+			comrel.Port source, comrel.InputPort target) {

+		boolean result = true;

+		if (source != null) {

+			if (source.eContainer() instanceof HelperUnit)

+				result &= (source instanceof OutputPort);

+			if (source.eContainer() instanceof AtomicUnit) {

+				result = false;

+			}

+			if (target != null) {

+				if (source.eContainer() instanceof CompositeUnit) {

+					result &= source.eContainer() == target.eContainer()

+							.eContainer();

+

+				}

+				if (source.eContainer() instanceof HelperUnit) {

+					if (target.eContainer() instanceof HelperUnit) {

+						result &= source.eContainer() != target.eContainer();

+					}

+					result &= (source.eContainer().eContainer() == target

+							.eContainer().eContainer());

+				}

+			}

+

+		}

+		return result;

+	}

+

+	private static boolean onlyOneInput(comrel.CompositeRefactoring container,

+			comrel.Port source, comrel.InputPort target) {

+		boolean result = true;

+		if (target != null) {

+			List<InputPort> ports = new ArrayList<InputPort>();

+			EObject portContainer = target.eContainer();

+			if (portContainer instanceof RefactoringUnit) {

+				RefactoringUnit refUnit = (RefactoringUnit) portContainer;

+				ports.addAll(refUnit.getAllInputPorts());

+			}

+			if (portContainer instanceof HelperUnit) {

+				HelperUnit helperUnit = (HelperUnit) portContainer;

+				ports.add(helperUnit.getInputPort());

+			}

+			InputPort p = null;

+			for (InputPort in : ports) {

+				if (target == in) {

+					p = in;

+					break;

+				}

+			}

+			if (p != null) {

+				List<PortMapping> mappings = container.getPortMappings();

+				for (PortMapping mapping : mappings) {

+					if (mapping.getTarget() == p) {

+						return false;

+					}

+				}

+			}

+		}

+		return result;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelTextNonResizableEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelTextNonResizableEditPolicy.java
new file mode 100644
index 0000000..3236d8d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelTextNonResizableEditPolicy.java
@@ -0,0 +1,228 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.draw2d.ColorConstants;

+import org.eclipse.draw2d.Figure;

+import org.eclipse.draw2d.FigureListener;

+import org.eclipse.draw2d.Graphics;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.gef.GraphicalEditPart;

+import org.eclipse.gef.handles.MoveHandle;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx;

+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+

+/**

+ * @generated

+ */

+public class ComrelTextNonResizableEditPolicy extends NonResizableEditPolicyEx {

+

+	/**

+	 * @generated

+	 */

+	private IFigure selectionFeedbackFigure;

+

+	/**

+	 * @generated

+	 */

+	private IFigure focusFeedbackFigure;

+

+	/**

+	 * @generated

+	 */

+	private FigureListener hostPositionListener;

+

+	/**

+	 * @generated

+	 */

+	protected void showPrimarySelection() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setSelected(true);

+			((WrappingLabel) getHostFigure()).setFocus(true);

+		} else {

+			showSelection();

+			showFocus();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void showSelection() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setSelected(true);

+			((WrappingLabel) getHostFigure()).setFocus(false);

+		} else {

+			hideSelection();

+			addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure());

+			getHostFigure().addFigureListener(getHostPositionListener());

+			refreshSelectionFeedback();

+			hideFocus();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void hideSelection() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setSelected(false);

+			((WrappingLabel) getHostFigure()).setFocus(false);

+		} else {

+			if (selectionFeedbackFigure != null) {

+				removeFeedback(selectionFeedbackFigure);

+				getHostFigure().removeFigureListener(getHostPositionListener());

+				selectionFeedbackFigure = null;

+			}

+			hideFocus();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void showFocus() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setFocus(true);

+		} else {

+			hideFocus();

+			addFeedback(focusFeedbackFigure = createFocusFeedbackFigure());

+			refreshFocusFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void hideFocus() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setFocus(false);

+		} else {

+			if (focusFeedbackFigure != null) {

+				removeFeedback(focusFeedbackFigure);

+				focusFeedbackFigure = null;

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Rectangle getFeedbackBounds() {

+		Rectangle bounds;

+		if (getHostFigure() instanceof Label) {

+			bounds = ((Label) getHostFigure()).getTextBounds();

+			bounds.intersect(getHostFigure().getBounds());

+		} else {

+			bounds = getHostFigure().getBounds().getCopy();

+		}

+		getHostFigure().getParent().translateToAbsolute(bounds);

+		getFeedbackLayer().translateToRelative(bounds);

+		return bounds;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createSelectionFeedbackFigure() {

+		if (getHostFigure() instanceof Label) {

+			Label feedbackFigure = new Label();

+			feedbackFigure.setOpaque(true);

+			feedbackFigure

+					.setBackgroundColor(ColorConstants.menuBackgroundSelected);

+			feedbackFigure

+					.setForegroundColor(ColorConstants.menuForegroundSelected);

+			return feedbackFigure;

+		} else {

+			RectangleFigure feedbackFigure = new RectangleFigure();

+			feedbackFigure.setFill(false);

+			return feedbackFigure;

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFocusFeedbackFigure() {

+		return new Figure() {

+

+			protected void paintFigure(Graphics graphics) {

+				graphics.drawFocus(getBounds().getResized(-1, -1));

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void updateLabel(Label target) {

+		Label source = (Label) getHostFigure();

+		target.setText(source.getText());

+		target.setTextAlignment(source.getTextAlignment());

+		target.setFont(source.getFont());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSelectionFeedback() {

+		if (selectionFeedbackFigure != null) {

+			if (selectionFeedbackFigure instanceof Label) {

+				updateLabel((Label) selectionFeedbackFigure);

+				selectionFeedbackFigure.setBounds(getFeedbackBounds());

+			} else {

+				selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5,

+						5));

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFocusFeedback() {

+		if (focusFeedbackFigure != null) {

+			focusFeedbackFigure.setBounds(getFeedbackBounds());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshFeedback() {

+		refreshSelectionFeedback();

+		refreshFocusFeedback();

+	}

+

+	/**

+	 * @generated

+	 */

+	private FigureListener getHostPositionListener() {

+		if (hostPositionListener == null) {

+			hostPositionListener = new FigureListener() {

+				public void figureMoved(IFigure source) {

+					refreshFeedback();

+				}

+			};

+		}

+		return hostPositionListener;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected List createSelectionHandles() {

+		MoveHandle moveHandle = new MoveHandle((GraphicalEditPart) getHost());

+		moveHandle.setBorder(null);

+		moveHandle.setDragTracker(new DragEditPartsTrackerEx(getHost()));

+		return Collections.singletonList(moveHandle);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelTextSelectionEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelTextSelectionEditPolicy.java
new file mode 100644
index 0000000..3487cc7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ComrelTextSelectionEditPolicy.java
@@ -0,0 +1,212 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.draw2d.ColorConstants;

+import org.eclipse.draw2d.Figure;

+import org.eclipse.draw2d.FigureListener;

+import org.eclipse.draw2d.Graphics;

+import org.eclipse.draw2d.IFigure;

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.draw2d.geometry.Rectangle;

+import org.eclipse.gef.editpolicies.SelectionEditPolicy;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+

+/**

+ * @generated

+ */

+public class ComrelTextSelectionEditPolicy extends SelectionEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private IFigure selectionFeedbackFigure;

+

+	/**

+	 * @generated

+	 */

+	private IFigure focusFeedbackFigure;

+

+	/**

+	 * @generated

+	 */

+	private FigureListener hostPositionListener;

+

+	/**

+	 * @generated

+	 */

+	protected void showPrimarySelection() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setSelected(true);

+			((WrappingLabel) getHostFigure()).setFocus(true);

+		} else {

+			showSelection();

+			showFocus();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void showSelection() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setSelected(true);

+			((WrappingLabel) getHostFigure()).setFocus(false);

+		} else {

+			hideSelection();

+			addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure());

+			getHostFigure().addFigureListener(getHostPositionListener());

+			refreshSelectionFeedback();

+			hideFocus();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void hideSelection() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setSelected(false);

+			((WrappingLabel) getHostFigure()).setFocus(false);

+		} else {

+			if (selectionFeedbackFigure != null) {

+				removeFeedback(selectionFeedbackFigure);

+				getHostFigure().removeFigureListener(getHostPositionListener());

+				selectionFeedbackFigure = null;

+			}

+			hideFocus();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void showFocus() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setFocus(true);

+		} else {

+			hideFocus();

+			addFeedback(focusFeedbackFigure = createFocusFeedbackFigure());

+			refreshFocusFeedback();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void hideFocus() {

+		if (getHostFigure() instanceof WrappingLabel) {

+			((WrappingLabel) getHostFigure()).setFocus(false);

+		} else {

+			if (focusFeedbackFigure != null) {

+				removeFeedback(focusFeedbackFigure);

+				focusFeedbackFigure = null;

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Rectangle getFeedbackBounds() {

+		Rectangle bounds;

+		if (getHostFigure() instanceof Label) {

+			bounds = ((Label) getHostFigure()).getTextBounds();

+			bounds.intersect(getHostFigure().getBounds());

+		} else {

+			bounds = getHostFigure().getBounds().getCopy();

+		}

+		getHostFigure().getParent().translateToAbsolute(bounds);

+		getFeedbackLayer().translateToRelative(bounds);

+		return bounds;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createSelectionFeedbackFigure() {

+		if (getHostFigure() instanceof Label) {

+			Label feedbackFigure = new Label();

+			feedbackFigure.setOpaque(true);

+			feedbackFigure

+					.setBackgroundColor(ColorConstants.menuBackgroundSelected);

+			feedbackFigure

+					.setForegroundColor(ColorConstants.menuForegroundSelected);

+			return feedbackFigure;

+		} else {

+			RectangleFigure feedbackFigure = new RectangleFigure();

+			feedbackFigure.setFill(false);

+			return feedbackFigure;

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IFigure createFocusFeedbackFigure() {

+		return new Figure() {

+

+			protected void paintFigure(Graphics graphics) {

+				graphics.drawFocus(getBounds().getResized(-1, -1));

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void updateLabel(Label target) {

+		Label source = (Label) getHostFigure();

+		target.setText(source.getText());

+		target.setTextAlignment(source.getTextAlignment());

+		target.setFont(source.getFont());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSelectionFeedback() {

+		if (selectionFeedbackFigure != null) {

+			if (selectionFeedbackFigure instanceof Label) {

+				updateLabel((Label) selectionFeedbackFigure);

+				selectionFeedbackFigure.setBounds(getFeedbackBounds());

+			} else {

+				selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5,

+						5));

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshFocusFeedback() {

+		if (focusFeedbackFigure != null) {

+			focusFeedbackFigure.setBounds(getFeedbackBounds());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void refreshFeedback() {

+		refreshSelectionFeedback();

+		refreshFocusFeedback();

+	}

+

+	/**

+	 * @generated

+	 */

+	private FigureListener getHostPositionListener() {

+		if (hostPositionListener == null) {

+			hostPositionListener = new FigureListener() {

+				public void figureMoved(IFigure source) {

+					refreshFeedback();

+				}

+			};

+		}

+		return hostPositionListener;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionCheckItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionCheckItemSemanticEditPolicy.java
new file mode 100644
index 0000000..9c1db5b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionCheckItemSemanticEditPolicy.java
@@ -0,0 +1,49 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionCheckItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionCheckItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionCheck_3076);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..3037a1a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit2CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3030SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3030SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..3508ee7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartmentEditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartmentEditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartmentEditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3030);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..a32ee71
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit3CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3046SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3046SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0ffd6eb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartment2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartment2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartment2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3046);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..2d5e8e6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit4CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3066SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3066SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c4e7730
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartment3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartment3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartment3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3066);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..0d09f7a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit5CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3071SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3071SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a50d73f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartment4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartment4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartment4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3071);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit6CanonicalEditPolicy.java
new file mode 100644
index 0000000..27bac95
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit6CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit6CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3072SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3072SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c007e67
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit6ItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartment5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartment5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartment5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3072);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit7CanonicalEditPolicy.java
new file mode 100644
index 0000000..4ae856c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit7CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit7CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3075SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_3075SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..776b0ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnit7ItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartment6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartment6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartment6EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnit7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnit7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3075);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..37c5050
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitCanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_2006SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort8EditPart.VISUAL_ID

+				|| visualID == MultiInputPort9EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnit_2006SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..b9072c1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7038SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7038SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b6069b6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3046);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..72f96d6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7054SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7054SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..64bb6ec
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3066);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..5fa5764
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7064SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7064SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..756c5b2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3071);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..d18ccfb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7068SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7068SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4a60d6e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3072);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..18ff0f6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7074SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7074SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4815533
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3075);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..7b1cd85
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7084SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7084SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a50404e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_2006);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..a8e3119
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Else();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7020SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+		case SequentialUnit7EditPart.VISUAL_ID:

+		case ConditionalUnit7EditPart.VISUAL_ID:

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitElseCompartment_7020SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..001e732
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit7CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit7CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit7CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit7CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit7CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3030);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3047 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3048 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3067 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3073 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3075 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit7CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3078 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..1490299
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7036SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7036SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b040aa4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3046);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..01b9af5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7052SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7052SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..77b5b46
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3066);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..03337cb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7062SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7062SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..db7ede1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3071);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..1dfc9e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7066SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7066SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f8e9e65
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3072);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..b5ea562
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7072SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7072SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b855fe7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3075);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..b824de8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7082SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7082SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f565c6f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_2006);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..eba6680
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7018SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitHelperUnitsCompartment_7018SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a1e7f56
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3030);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3050 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3051 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3052 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3053 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..ae7096a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7035SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7035SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ce9b642
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3046);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..f57feef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7051SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7051SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4806b7c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3066);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..076c16f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7061SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7061SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..30c1a81
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3071);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..f7d6893
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7065SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7065SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f261fe6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3072);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..e21423b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7071SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7071SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0f0d38b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3075);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..69f54c8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7081SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7081SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..89458ce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_2006);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..444ecac
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,163 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_If();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7017SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		return ConditionCheckEditPart.VISUAL_ID == ComrelVisualIDRegistry

+				.getVisualID(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitIfCompartment_7017SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..5c7fd48
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.ConditionCheckCreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3030);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.ConditionCheck_3076 == req.getElementType()) {

+			return getGEFWrapper(new ConditionCheckCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..28e9ddc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7037SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7037SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..827cb41
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3046);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..a7ceb68
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7053SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7053SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..36d65f3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3066);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..0edff4b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7063SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7063SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..11b29a5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3071);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..27254c1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7067SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7067SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0ebda23
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3072);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..25268f4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7073SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7073SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ba973c8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3075);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..47e768c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7083SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7083SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..aafa917
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_2006);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..4de5f03
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getConditionalUnit_Then();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7019SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+		case SequentialUnit5EditPart.VISUAL_ID:

+		case ConditionalUnit6EditPart.VISUAL_ID:

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getConditionalUnitConditionalUnitThenCompartment_7019SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..00233df
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit6CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit6CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_3030);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3033 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3036 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3054 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3069 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3072 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3077 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit6CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ef30e72
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ConditionalUnitItemSemanticEditPolicy.java
@@ -0,0 +1,337 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort9CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort8CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitElseCompartment7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitIfCompartment7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitConditionalUnitThenCompartment7EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ConditionalUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ConditionalUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ConditionalUnit_2006);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3031 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort8CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3032 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort9CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort9EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case ConditionCheckEditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit7EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..b5d9ec1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit2CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3039SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort5EditPart.VISUAL_ID

+				|| visualID == MultiInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3039SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..7e48125
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,196 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort4CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort5CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFeatureUnit_3039);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3013 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3014 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3015 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..1a8c6b9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit3CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3051SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort5EditPart.VISUAL_ID

+				|| visualID == MultiInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3051SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1495a3c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,196 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort4CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort5CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFeatureUnit_3051);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3013 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3014 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3015 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..fe106bc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit4CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3056SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort5EditPart.VISUAL_ID

+				|| visualID == MultiInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3056SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..55f2de7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,196 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort4CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort5CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFeatureUnit_3056);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3013 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3014 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3015 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..4b24cde
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit5CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3062SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort5EditPart.VISUAL_ID

+				|| visualID == MultiInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3062SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0cd3a42
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,196 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort4CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort5CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFeatureUnit_3062);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3013 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3014 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3015 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..d99c3aa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnitCanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3012SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort5EditPart.VISUAL_ID

+				|| visualID == MultiInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFeatureUnit_3012SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..6ced61c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFeatureUnitItemSemanticEditPolicy.java
@@ -0,0 +1,196 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort4CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPortCreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort5CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFeatureUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFeatureUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFeatureUnit_3012);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3013 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3014 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3015 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..822998f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit2CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3041SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3041SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c7836ea
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,152 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort6CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFilterUnit_3041);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3020 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3021 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..f10b01f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit3CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3053SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3053SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..daf2f4a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,152 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort6CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFilterUnit_3053);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3020 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3021 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..712af78
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit4CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3058SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3058SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f314582
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,152 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort6CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFilterUnit_3058);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3020 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3021 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..e1974c3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit5CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3064SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3064SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..726e6f7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,152 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort6CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFilterUnit_3064);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3020 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3021 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..55ec48c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnitCanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getMultiFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3019SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getMultiFilterUnit_3019SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b285fa9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiFilterUnitItemSemanticEditPolicy.java
@@ -0,0 +1,152 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort6CreateCommand;

+import comrel.diagram.edit.commands.MultiOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiFilterUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiFilterUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiFilterUnit_3019);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3020 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiOutputPort_3021 == req.getElementType()) {

+			return getGEFWrapper(new MultiOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..6b97356
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort2ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3006);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..7e7d3e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort3ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3010);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0f6c2f4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort4ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3014);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..cf79f49
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort5ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3017);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4dbd5a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort6ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3020);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f0d39fc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort7ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3024);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort8ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort8ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..6e832e6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort8ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort8ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort8ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3028);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort9ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort9ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..831b527
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPort9ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPort9ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPort9ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3032);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPortItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPortItemSemanticEditPolicy.java
new file mode 100644
index 0000000..496f37a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiInputPortItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiInputPortItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiInputPortItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiInputPort_3002);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiOutputPort2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiOutputPort2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4cf9799
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiOutputPort2ItemSemanticEditPolicy.java
@@ -0,0 +1,137 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiOutputPort2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPort2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiOutputPort_3021);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return null;

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiOutputPortItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiOutputPortItemSemanticEditPolicy.java
new file mode 100644
index 0000000..47e5f66
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiOutputPortItemSemanticEditPolicy.java
@@ -0,0 +1,137 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiPortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiPortMappingReorientCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiOutputPortItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiOutputPortItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiOutputPort_3015);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return getGEFWrapper(new MultiPortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.MultiPortMapping_4002 == req.getElementType()) {

+			return null;

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiPortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiPortMappingItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiPortMappingItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ea6019a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiPortMappingItemSemanticEditPolicy.java
@@ -0,0 +1,32 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiPortMappingItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiPortMappingItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiPortMapping_4002);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		return getGEFWrapper(new DestroyElementCommand(req));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiSinglePortMappingItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiSinglePortMappingItemSemanticEditPolicy.java
new file mode 100644
index 0000000..9e54def
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/MultiSinglePortMappingItemSemanticEditPolicy.java
@@ -0,0 +1,32 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class MultiSinglePortMappingItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public MultiSinglePortMappingItemSemanticEditPolicy() {

+		super(ComrelElementTypes.MultiSinglePortMapping_4003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		return getGEFWrapper(new DestroyElementCommand(req));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/OpenDiagramEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/OpenDiagramEditPolicy.java
new file mode 100644
index 0000000..a055020
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/OpenDiagramEditPolicy.java
@@ -0,0 +1,204 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.io.IOException;

+import java.lang.reflect.InvocationTargetException;

+import java.util.Iterator;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.common.ui.URIEditorInput;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;

+import org.eclipse.gmf.runtime.diagram.core.services.ViewService;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.OpenEditPolicy;

+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.HintedDiagramLinkStyle;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.Style;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.part.ComrelDiagramEditor;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelDiagramEditorUtil;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class OpenDiagramEditPolicy extends OpenEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected Command getOpenCommand(Request request) {

+		EditPart targetEditPart = getTargetEditPart(request);

+		if (false == targetEditPart.getModel() instanceof View) {

+			return null;

+		}

+		View view = (View) targetEditPart.getModel();

+		Style link = view.getStyle(NotationPackage.eINSTANCE

+				.getHintedDiagramLinkStyle());

+		if (false == link instanceof HintedDiagramLinkStyle) {

+			return null;

+		}

+		return new ICommandProxy(new OpenDiagramCommand(

+				(HintedDiagramLinkStyle) link));

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class OpenDiagramCommand extends

+			AbstractTransactionalCommand {

+

+		/**

+		 * @generated

+		 */

+		private final HintedDiagramLinkStyle diagramFacet;

+

+		/**

+		 * @generated

+		 */

+		OpenDiagramCommand(HintedDiagramLinkStyle linkStyle) {

+			// editing domain is taken for original diagram, 

+			// if we open diagram from another file, we should use another editing domain

+			super(TransactionUtil.getEditingDomain(linkStyle),

+					Messages.CommandName_OpenDiagram, null);

+			diagramFacet = linkStyle;

+		}

+

+		// FIXME canExecute if  !(readOnly && getDiagramToOpen == null), i.e. open works on ro diagrams only when there's associated diagram already

+

+		/**

+		 * @generated

+		 */

+		protected CommandResult doExecuteWithResult(IProgressMonitor monitor,

+				IAdaptable info) throws ExecutionException {

+			try {

+				Diagram diagram = getDiagramToOpen();

+				if (diagram == null) {

+					diagram = intializeNewDiagram();

+				}

+				URI uri = EcoreUtil.getURI(diagram);

+				String editorName = uri.lastSegment() + '#'

+						+ diagram.eResource().getContents().indexOf(diagram);

+				IEditorInput editorInput = new URIEditorInput(uri, editorName);

+				IWorkbenchPage page = PlatformUI.getWorkbench()

+						.getActiveWorkbenchWindow().getActivePage();

+				page.openEditor(editorInput, getEditorID());

+				return CommandResult.newOKCommandResult();

+			} catch (Exception ex) {

+				throw new ExecutionException("Can't open diagram", ex);

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		protected Diagram getDiagramToOpen() {

+			return diagramFacet.getDiagramLink();

+		}

+

+		/**

+		 * @generated

+		 */

+		protected Diagram intializeNewDiagram() throws ExecutionException {

+			Diagram d = ViewService.createDiagram(getDiagramDomainElement(),

+					getDiagramKind(), getPreferencesHint());

+			if (d == null) {

+				throw new ExecutionException("Can't create diagram of '"

+						+ getDiagramKind() + "' kind");

+			}

+			diagramFacet.setDiagramLink(d);

+			assert diagramFacet.eResource() != null;

+			diagramFacet.eResource().getContents().add(d);

+			EObject container = diagramFacet.eContainer();

+			while (container instanceof View) {

+				((View) container).persist();

+				container = container.eContainer();

+			}

+			try {

+				new WorkspaceModifyOperation() {

+					protected void execute(IProgressMonitor monitor)

+							throws CoreException, InvocationTargetException,

+							InterruptedException {

+						try {

+							for (Iterator it = diagramFacet.eResource()

+									.getResourceSet().getResources().iterator(); it

+									.hasNext();) {

+								Resource nextResource = (Resource) it.next();

+								if (nextResource.isLoaded()

+										&& !getEditingDomain().isReadOnly(

+												nextResource)) {

+									nextResource.save(ComrelDiagramEditorUtil

+											.getSaveOptions());

+								}

+							}

+						} catch (IOException ex) {

+							throw new InvocationTargetException(ex,

+									"Save operation failed");

+						}

+					}

+				}.run(null);

+			} catch (InvocationTargetException e) {

+				throw new ExecutionException("Can't create diagram of '"

+						+ getDiagramKind() + "' kind", e);

+			} catch (InterruptedException e) {

+				throw new ExecutionException("Can't create diagram of '"

+						+ getDiagramKind() + "' kind", e);

+			}

+			return d;

+		}

+

+		/**

+		 * @generated

+		 */

+		protected EObject getDiagramDomainElement() {

+			// use same element as associated with EP

+			return ((View) diagramFacet.eContainer()).getElement();

+		}

+

+		/**

+		 * @generated

+		 */

+		protected PreferencesHint getPreferencesHint() {

+			// XXX prefhint from target diagram's editor?

+			return ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT;

+		}

+

+		/**

+		 * @generated

+		 */

+		protected String getDiagramKind() {

+			return CompositeRefactoringEditPart.MODEL_ID;

+		}

+

+		/**

+		 * @generated

+		 */

+		protected String getEditorID() {

+			return ComrelDiagramEditor.ID;

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..7004e7d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit2CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3004SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3004SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ff2e522
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3004);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..c11cbb5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit3CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3036SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3036SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..5a48016
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3036);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..a2120d1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit4CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3037SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3037SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c114bec
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3037);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..8249316
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit5CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3043SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3043SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b0f7f6a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3043);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit6CanonicalEditPolicy.java
new file mode 100644
index 0000000..65a94f2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit6CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit6CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3045SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3045SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..06db209
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit6ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3045);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit7CanonicalEditPolicy.java
new file mode 100644
index 0000000..2762389
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit7CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit7CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3048SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_3048SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1814b3c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnit7ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnit7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnit7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3048);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..ee39ed8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitCanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getParallelQueuedUnit_MultiInputPorts());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_2003SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort3EditPart.VISUAL_ID

+				|| visualID == MultiInputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnit_2003SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f7e25bb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort2CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort3CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_2003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3005 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3006 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit2EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit3EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..3e2ff32
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7023SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7023SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a2e4df7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3036);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..a1994bf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7025SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7025SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..46103ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3037);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..ed1f9c8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7029SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7029SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..37727a4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3043);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..5b80f6f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7033SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7033SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..69d6aac
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3045);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..eab2dd8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7041SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7041SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..667407f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3048);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..5d2c0eb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7075SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7075SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ade6088
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_2003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..885792f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7005SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7005SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..eb5a5e6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit2CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit2CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3004);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3038 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3039 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3040 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit2CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3041 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..6de5d0f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7024SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7024SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..18f5079
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3036);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..20ebbd4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7026SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7026SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d2ac1bb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3037);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..068a1ec
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7030SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7030SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..5d20d87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3043);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..279b919
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7034SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7034SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a22a109
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3045);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..e747678
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7042SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7042SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8c1b8f8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3048);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..170dce9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7076SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7076SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b812fb1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_2003);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..2f888a2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7006SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+		case SequentialUnit3EditPart.VISUAL_ID:

+		case ConditionalUnit3EditPart.VISUAL_ID:

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7006SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..9953bc3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit3CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit3CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit3CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit3CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit3CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.ParallelQueuedUnit_3004);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3007 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3037 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3042 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3044 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3046 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit3CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3049 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit3CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..50993b1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit2CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3026SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3026SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8a09c46
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3026);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..f468e5a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit3CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3044SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3044SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..69f4050
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3044);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..74abb67
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit4CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3060SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3060SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..19d7c44
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3060);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..4b15f52
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit5CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3069SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3069SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c97b33e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3069);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit6CanonicalEditPolicy.java
new file mode 100644
index 0000000..ab6edab
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit6CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit6CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3070SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3070SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1fd4707
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit6ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnit6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3070);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit7CanonicalEditPolicy.java
new file mode 100644
index 0000000..9678873
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit7CanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnit7CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3073SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_3073SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0db2451
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnit7ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnit7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnit7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3073);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..f3e3536
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitCanonicalEditPolicy.java
@@ -0,0 +1,164 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_InputPorts();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_2005SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort7EditPart.VISUAL_ID

+				|| visualID == MultiInputPort8EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnit_2005SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a19b6f4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort8CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort7CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_2005);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3027 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort7CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3028 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort8CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort8EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit6EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..98ed5dd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7031SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7031SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..e34b87b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3044);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..f160cb0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7047SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7047SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..5dc2331
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3060);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..f2e74e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7057SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7057SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b1a98dc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3069);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..8137521
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7059SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7059SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..646ce65
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3070);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..57a2d30
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7069SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7069SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..fa00595
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3073);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..00adf44
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7079SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7079SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ea5fd1d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_2005);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..c66121d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7013SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitHelperUnitsCompartment_7013SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..849ae1b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit5CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3026);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3061 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3062 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3063 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3064 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..f1bf018
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7032SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7032SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d64d4ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3044);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..a13d7a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7048SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7048SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a1456f2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3060);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..0dd6852
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7058SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7058SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d522a4d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3069);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..00004f8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7060SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7060SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0480158
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3070);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..e9614ab
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7070SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7070SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c535cda
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3073);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..fa21611
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7080SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7080SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..9704343
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_2005);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..6d899e4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSequentialUnit_RefactoringUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7014SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+		case SequentialUnit6EditPart.VISUAL_ID:

+		case ConditionalUnit5EditPart.VISUAL_ID:

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7014SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..3ce3284
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit5CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit5CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit6CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit6CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit6CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SequentialUnit_3026);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3029 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3045 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3065 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3070 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit6CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3071 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3074 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit5CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..70cc6b3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit2CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3038SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiInputPort3EditPart.VISUAL_ID

+				|| visualID == SingleOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3038SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4acac9b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,188 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort3CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort4CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPortCreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFeatureUnit_3038);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3009 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3010 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3011 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..f5d079c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit3CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3050SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiInputPort3EditPart.VISUAL_ID

+				|| visualID == SingleOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3050SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4ed6634
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,188 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort3CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort4CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPortCreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFeatureUnit_3050);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3009 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3010 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3011 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..3a07f92
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit4CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3055SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiInputPort3EditPart.VISUAL_ID

+				|| visualID == SingleOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3055SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..394251f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,188 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort3CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort4CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPortCreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFeatureUnit_3055);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3009 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3010 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3011 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..763bfcb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit5CanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3061SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiInputPort3EditPart.VISUAL_ID

+				|| visualID == SingleOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3061SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..384ba89
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,188 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort3CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort4CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPortCreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFeatureUnit_3061);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3009 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3010 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3011 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..fc0f44d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnitCanonicalEditPolicy.java
@@ -0,0 +1,182 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_SecondaryInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFeatureUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3008SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort4EditPart.VISUAL_ID

+				|| visualID == MultiInputPort3EditPart.VISUAL_ID

+				|| visualID == SingleOutputPortEditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFeatureUnit_3008SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8cf3ded
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFeatureUnitItemSemanticEditPolicy.java
@@ -0,0 +1,188 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort3CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort4CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPortCreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFeatureUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFeatureUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFeatureUnit_3008);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3009 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3010 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort3CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3011 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPortCreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort4EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort3EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPortEditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..fb6dc87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit2CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3040SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort5EditPart.VISUAL_ID

+				|| visualID == SingleOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3040SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a93dec7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,145 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort5CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFilterUnit_3040);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3017 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3018 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..b12a39f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit3CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3052SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort5EditPart.VISUAL_ID

+				|| visualID == SingleOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3052SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..7ae7f9e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,145 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort5CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFilterUnit_3052);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3017 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3018 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..0afe8c8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit4CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3057SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort5EditPart.VISUAL_ID

+				|| visualID == SingleOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3057SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d863b75
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,145 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort5CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFilterUnit_3057);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3017 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3018 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..32802e4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit5CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3063SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort5EditPart.VISUAL_ID

+				|| visualID == SingleOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3063SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b5ca24a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,145 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort5CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFilterUnit_3063);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3017 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3018 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..280ec6d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnitCanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_InputPort());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleFilterUnit_OutputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3016SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == MultiInputPort5EditPart.VISUAL_ID

+				|| visualID == SingleOutputPort2EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleFilterUnit_3016SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d2334e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleFilterUnitItemSemanticEditPolicy.java
@@ -0,0 +1,145 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort5CreateCommand;

+import comrel.diagram.edit.commands.SingleOutputPort2CreateCommand;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleFilterUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleFilterUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleFilterUnit_3016);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.MultiInputPort_3017 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleOutputPort_3018 == req.getElementType()) {

+			return getGEFWrapper(new SingleOutputPort2CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case MultiInputPort5EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleOutputPort2EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..4a56c40
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort2ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3001);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..591c7e0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort3ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3005);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..56f7be3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort4ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3009);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c237f71
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort5ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3013);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..514ec26
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort6ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3023);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8642449
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort7ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3027);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort8ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort8ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..480d4df
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort8ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort8ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort8ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3031);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort9ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort9ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f506bfc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPort9ItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPort9ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPort9ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_3035);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPortItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPortItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d4a80c9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleInputPortItemSemanticEditPolicy.java
@@ -0,0 +1,148 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiSinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.MultiSinglePortMappingReorientCommand;

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleInputPortItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleInputPortItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleInputPort_2001);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getTargetEdges().iterator(); it.hasNext();) {

+			Edge incomingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+			if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						incomingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), incomingLink));

+				continue;

+			}

+		}

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		if (ComrelElementTypes.MultiSinglePortMapping_4003 == req

+				.getElementType()) {

+			return getGEFWrapper(new MultiSinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new MultiSinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleOutputPort2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleOutputPort2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..bd72892
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleOutputPort2ItemSemanticEditPolicy.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleOutputPort2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPort2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleOutputPort_3018);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleOutputPortItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleOutputPortItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c068238
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleOutputPortItemSemanticEditPolicy.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.SinglePortMappingCreateCommand;

+import comrel.diagram.edit.commands.SinglePortMappingReorientCommand;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleOutputPortItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleOutputPortItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleOutputPort_3011);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		for (Iterator<?> it = view.getSourceEdges().iterator(); it.hasNext();) {

+			Edge outgoingLink = (Edge) it.next();

+			if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+				DestroyElementRequest r = new DestroyElementRequest(

+						outgoingLink.getElement(), false);

+				cmd.add(new DestroyElementCommand(r));

+				cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink));

+				continue;

+			}

+		}

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {

+		Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req)

+				: getCompleteCreateRelationshipCommand(req);

+		return command != null ? command : super

+				.getCreateRelationshipCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getStartCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return getGEFWrapper(new SinglePortMappingCreateCommand(req,

+					req.getSource(), req.getTarget()));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCompleteCreateRelationshipCommand(

+			CreateRelationshipRequest req) {

+		if (ComrelElementTypes.SinglePortMapping_4001 == req.getElementType()) {

+			return null;

+		}

+		return null;

+	}

+

+	/**

+	 * Returns command to reorient EClass based link. New link target or source

+	 * should be the domain model element associated with this node.

+	 * 

+	 * @generated

+	 */

+	protected Command getReorientRelationshipCommand(

+			ReorientRelationshipRequest req) {

+		switch (getVisualID(req)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getGEFWrapper(new SinglePortMappingReorientCommand(req));

+		}

+		return super.getReorientRelationshipCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SinglePortMappingItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SinglePortMappingItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8f11ed0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SinglePortMappingItemSemanticEditPolicy.java
@@ -0,0 +1,32 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SinglePortMappingItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SinglePortMappingItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SinglePortMapping_4001);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		return getGEFWrapper(new DestroyElementCommand(req));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit2CanonicalEditPolicy.java
new file mode 100644
index 0000000..57ddb6b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit2CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit2CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3022SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3022SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..d2726f7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit2ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit2ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3022);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit3CanonicalEditPolicy.java
new file mode 100644
index 0000000..ae78231
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit3CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit3CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3042SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3042SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..66f2cc4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit3ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit3ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3042);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit4CanonicalEditPolicy.java
new file mode 100644
index 0000000..9b7a0bf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit4CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit4CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3054SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3054SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..49f5000
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit4ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit4ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3054);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit5CanonicalEditPolicy.java
new file mode 100644
index 0000000..4128238
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit5CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit5CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3059SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3059SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b1572db
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit5ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit5ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3059);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit6CanonicalEditPolicy.java
new file mode 100644
index 0000000..22fe96f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit6CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit6CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3065SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3065SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..0f473d2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit6ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit6ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3065);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit7CanonicalEditPolicy.java
new file mode 100644
index 0000000..a1f4cd6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit7CanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit7CanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3067SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_3067SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..abad04f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnit7ItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnit7ItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnit7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3067);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitCanonicalEditPolicy.java
new file mode 100644
index 0000000..7fff04c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitCanonicalEditPolicy.java
@@ -0,0 +1,178 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitCanonicalEditPolicy extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	private Set<EStructuralFeature> myFeaturesToSynchronize;

+

+	/**

+	 * @generated

+	 */

+	protected Set getFeaturesToSynchronize() {

+		if (myFeaturesToSynchronize == null) {

+			myFeaturesToSynchronize = new HashSet<EStructuralFeature>();

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_SingleInputPorts());

+			myFeaturesToSynchronize.add(ComrelPackage.eINSTANCE

+					.getSingleQueuedUnit_MultiInputPort());

+		}

+		return myFeaturesToSynchronize;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_2004SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		return visualID == SingleInputPort6EditPart.VISUAL_ID

+				|| visualID == MultiInputPort7EditPart.VISUAL_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnit_2004SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitItemSemanticEditPolicy.java
new file mode 100644
index 0000000..120565a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitItemSemanticEditPolicy.java
@@ -0,0 +1,263 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.Iterator;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand;

+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.commands.MultiInputPort7CreateCommand;

+import comrel.diagram.edit.commands.SingleInputPort6CreateCommand;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitItemSemanticEditPolicy extends

+		ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_2004);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleInputPort_3023 == req.getElementType()) {

+			return getGEFWrapper(new SingleInputPort6CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiInputPort_3024 == req.getElementType()) {

+			return getGEFWrapper(new MultiInputPort7CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getDestroyElementCommand(DestroyElementRequest req) {

+		View view = (View) getHost().getModel();

+		CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(

+				getEditingDomain(), null);

+		cmd.setTransactionNestingEnabled(false);

+		EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+		if (annotation == null) {

+			// there are indirectly referenced children, need extra commands: false

+			addDestroyChildNodesCommand(cmd);

+			addDestroyShortcutsCommand(cmd, view);

+			// delete host element

+			cmd.add(new DestroyElementCommand(req));

+		} else {

+			cmd.add(new DeleteCommand(getEditingDomain(), view));

+		}

+		return getGEFWrapper(cmd.reduce());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void addDestroyChildNodesCommand(ICompositeCommand cmd) {

+		View view = (View) getHost().getModel();

+		for (Iterator<?> nit = view.getChildren().iterator(); nit.hasNext();) {

+			Node node = (Node) nit.next();

+			switch (ComrelVisualIDRegistry.getVisualID(node)) {

+			case SingleInputPort6EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == SinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case MultiInputPort7EditPart.VISUAL_ID:

+				for (Iterator<?> it = node.getTargetEdges().iterator(); it

+						.hasNext();) {

+					Edge incomingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(incomingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								incomingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								incomingLink));

+						continue;

+					}

+				}

+				for (Iterator<?> it = node.getSourceEdges().iterator(); it

+						.hasNext();) {

+					Edge outgoingLink = (Edge) it.next();

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiPortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+					if (ComrelVisualIDRegistry.getVisualID(outgoingLink) == MultiSinglePortMappingEditPart.VISUAL_ID) {

+						DestroyElementRequest r = new DestroyElementRequest(

+								outgoingLink.getElement(), false);

+						cmd.add(new DestroyElementCommand(r));

+						cmd.add(new DeleteCommand(getEditingDomain(),

+								outgoingLink));

+						continue;

+					}

+				}

+				cmd.add(new DestroyElementCommand(new DestroyElementRequest(

+						getEditingDomain(), node.getElement(), false))); // directlyOwned: true

+				// don't need explicit deletion of node as parent's view deletion would clean child views as well 

+				// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), node));

+				break;

+			case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case SingleFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFeatureUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case MultiFilterUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+				for (Iterator<?> cit = node.getChildren().iterator(); cit

+						.hasNext();) {

+					Node cnode = (Node) cit.next();

+					switch (ComrelVisualIDRegistry.getVisualID(cnode)) {

+					case CartesianQueuedUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ParallelQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SingleQueuedUnit5EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case SequentialUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case ConditionalUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					case AtomicUnit4EditPart.VISUAL_ID:

+						cmd.add(new DestroyElementCommand(

+								new DestroyElementRequest(getEditingDomain(),

+										cnode.getElement(), false))); // directlyOwned: true

+						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 

+						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));

+						break;

+					}

+				}

+				break;

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..265332a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7027SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7027SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..ce6013b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3042);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..c96847d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7043SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7043SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..1712e54
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3054);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..ce479bc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7045SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7045SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..47f5958
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3059);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..8dc0b48
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7049SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7049SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a252c92
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3065);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..0d9749a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7055SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7055SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..a6b04d5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3067);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..1bded96
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7077SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7077SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..283cf30
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_2004);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..79ee817
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,173 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_HelperUnits();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7009SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7009SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..fd1bf50
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,47 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.MultiFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.MultiFilterUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFeatureUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleFilterUnit4CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3022);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.SingleFeatureUnit_3055 == req.getElementType()) {

+			return getGEFWrapper(new SingleFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFeatureUnit_3056 == req.getElementType()) {

+			return getGEFWrapper(new MultiFeatureUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleFilterUnit_3057 == req.getElementType()) {

+			return getGEFWrapper(new SingleFilterUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.MultiFilterUnit_3058 == req.getElementType()) {

+			return getGEFWrapper(new MultiFilterUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy.java
new file mode 100644
index 0000000..3bdd6da
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7028SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7028SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..c75edd8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3042);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy.java
new file mode 100644
index 0000000..1f1277e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7044SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7044SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..78982a3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3054);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy.java
new file mode 100644
index 0000000..0ea4a23
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7046SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7046SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..b0b395c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3059);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy.java
new file mode 100644
index 0000000..85f8651
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7050SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7050SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..f05e578
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3065);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy.java
new file mode 100644
index 0000000..ca5acb8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7056SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7056SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..8995d26
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3067);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy.java
new file mode 100644
index 0000000..f0802e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7078SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7078SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy.java
new file mode 100644
index 0000000..2b6d2aa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_2004);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy.java
new file mode 100644
index 0000000..c4ac185
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy.java
@@ -0,0 +1,177 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.part.ComrelDiagramUpdater;

+import comrel.diagram.part.ComrelNodeDescriptor;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy

+		extends CanonicalEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	protected EStructuralFeature getFeatureToSynchronize() {

+		return ComrelPackage.eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected List getSemanticChildrenList() {

+		View viewObject = (View) getHost().getModel();

+		LinkedList<EObject> result = new LinkedList<EObject>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7010SemanticChildren(viewObject);

+		for (ComrelNodeDescriptor d : childDescriptors) {

+			result.add(d.getModelElement());

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isOrphaned(Collection<EObject> semanticChildren,

+			final View view) {

+		return isMyDiagramElement(view)

+				&& !semanticChildren.contains(view.getElement());

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isMyDiagramElement(View view) {

+		int visualID = ComrelVisualIDRegistry.getVisualID(view);

+		switch (visualID) {

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+		case SequentialUnit4EditPart.VISUAL_ID:

+		case ConditionalUnit4EditPart.VISUAL_ID:

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return true;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void refreshSemantic() {

+		if (resolveSemanticElement() == null) {

+			return;

+		}

+		LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>();

+		List<ComrelNodeDescriptor> childDescriptors = ComrelDiagramUpdater

+				.getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7010SemanticChildren((View) getHost()

+						.getModel());

+		LinkedList<View> orphaned = new LinkedList<View>();

+		// we care to check only views we recognize as ours

+		LinkedList<View> knownViewChildren = new LinkedList<View>();

+		for (View v : getViewChildren()) {

+			if (isMyDiagramElement(v)) {

+				knownViewChildren.add(v);

+			}

+		}

+		// alternative to #cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren)

+		//

+		// iteration happens over list of desired semantic elements, trying to find best matching View, while original CEP

+		// iterates views, potentially losing view (size/bounds) information - i.e. if there are few views to reference same EObject, only last one 

+		// to answer isOrphaned == true will be used for the domain element representation, see #cleanCanonicalSemanticChildren()

+		for (Iterator<ComrelNodeDescriptor> descriptorsIterator = childDescriptors

+				.iterator(); descriptorsIterator.hasNext();) {

+			ComrelNodeDescriptor next = descriptorsIterator.next();

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			LinkedList<View> perfectMatch = new LinkedList<View>(); // both semanticElement and hint match that of NodeDescriptor

+			for (View childView : getViewChildren()) {

+				EObject semanticElement = childView.getElement();

+				if (next.getModelElement().equals(semanticElement)) {

+					if (hint.equals(childView.getType())) {

+						perfectMatch.add(childView);

+						// actually, can stop iteration over view children here, but

+						// may want to use not the first view but last one as a 'real' match (the way original CEP does

+						// with its trick with viewToSemanticMap inside #cleanCanonicalSemanticChildren

+					}

+				}

+			}

+			if (perfectMatch.size() > 0) {

+				descriptorsIterator.remove(); // precise match found no need to create anything for the NodeDescriptor

+				// use only one view (first or last?), keep rest as orphaned for further consideration

+				knownViewChildren.remove(perfectMatch.getFirst());

+			}

+		}

+		// those left in knownViewChildren are subject to removal - they are our diagram elements we didn't find match to,

+		// or those we have potential matches to, and thus need to be recreated, preserving size/location information.

+		orphaned.addAll(knownViewChildren);

+		//

+		ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>(

+				childDescriptors.size());

+		for (ComrelNodeDescriptor next : childDescriptors) {

+			String hint = ComrelVisualIDRegistry.getType(next.getVisualID());

+			IAdaptable elementAdapter = new CanonicalElementAdapter(

+					next.getModelElement(), hint);

+			CreateViewRequest.ViewDescriptor descriptor = new CreateViewRequest.ViewDescriptor(

+					elementAdapter, Node.class, hint, ViewUtil.APPEND, false,

+					host().getDiagramPreferencesHint());

+			viewDescriptors.add(descriptor);

+		}

+

+		boolean changed = deleteViews(orphaned.iterator());

+		//

+		CreateViewRequest request = getCreateViewRequest(viewDescriptors);

+		Command cmd = getCreateViewCommand(request);

+		if (cmd != null && cmd.canExecute()) {

+			SetViewMutabilityCommand.makeMutable(

+					new EObjectAdapter(host().getNotationView())).execute();

+			executeCommand(cmd);

+			@SuppressWarnings("unchecked")

+			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();

+			createdViews.addAll(nl);

+		}

+		if (changed || createdViews.size() > 0) {

+			postProcessRefreshSemantic(createdViews);

+		}

+		if (createdViews.size() > 1) {

+			// perform a layout of the container

+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host()

+					.getEditingDomain(), createdViews, host());

+			executeCommand(new ICommandProxy(layoutCmd));

+		}

+

+		makeViewsImmutable(createdViews);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy.java
new file mode 100644
index 0000000..bcb3953
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/policies/SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy.java
@@ -0,0 +1,55 @@
+/*

+ * 

+ */

+package comrel.diagram.edit.policies;

+

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;

+

+import comrel.diagram.edit.commands.AtomicUnit4CreateCommand;

+import comrel.diagram.edit.commands.CartesianQueuedUnit4CreateCommand;

+import comrel.diagram.edit.commands.ConditionalUnit4CreateCommand;

+import comrel.diagram.edit.commands.ParallelQueuedUnit5CreateCommand;

+import comrel.diagram.edit.commands.SequentialUnit4CreateCommand;

+import comrel.diagram.edit.commands.SingleQueuedUnit5CreateCommand;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy

+		extends ComrelBaseItemSemanticEditPolicy {

+

+	/**

+	 * @generated

+	 */

+	public SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy() {

+		super(ComrelElementTypes.SingleQueuedUnit_3022);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCreateCommand(CreateElementRequest req) {

+		if (ComrelElementTypes.CartesianQueuedUnit_3025 == req.getElementType()) {

+			return getGEFWrapper(new CartesianQueuedUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ParallelQueuedUnit_3043 == req.getElementType()) {

+			return getGEFWrapper(new ParallelQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SingleQueuedUnit_3059 == req.getElementType()) {

+			return getGEFWrapper(new SingleQueuedUnit5CreateCommand(req));

+		}

+		if (ComrelElementTypes.SequentialUnit_3060 == req.getElementType()) {

+			return getGEFWrapper(new SequentialUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.ConditionalUnit_3066 == req.getElementType()) {

+			return getGEFWrapper(new ConditionalUnit4CreateCommand(req));

+		}

+		if (ComrelElementTypes.AtomicUnit_3068 == req.getElementType()) {

+			return getGEFWrapper(new AtomicUnit4CreateCommand(req));

+		}

+		return super.getCreateCommand(req);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/expressions/ComrelAbstractExpression.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/expressions/ComrelAbstractExpression.java
new file mode 100644
index 0000000..97bc394
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/expressions/ComrelAbstractExpression.java
@@ -0,0 +1,161 @@
+/*

+ * 

+ */

+package comrel.diagram.expressions;

+

+import java.math.BigDecimal;

+import java.math.BigInteger;

+import java.util.Collections;

+import java.util.Map;

+

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.emf.ecore.EClassifier;

+import org.eclipse.emf.ecore.EDataType;

+import org.eclipse.emf.ecore.EEnum;

+import org.eclipse.emf.ecore.EEnumLiteral;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public abstract class ComrelAbstractExpression {

+

+	/**

+	 * @generated

+	 */

+	private IStatus status = Status.OK_STATUS;

+

+	/**

+	 * @generated

+	 */

+	protected void setStatus(int severity, String message, Throwable throwable) {

+		String pluginID = ComrelDiagramEditorPlugin.ID;

+		this.status = new Status(severity, pluginID, -1,

+				(message != null) ? message : "", throwable); //$NON-NLS-1$

+		if (!this.status.isOK()) {

+			ComrelDiagramEditorPlugin

+					.getInstance()

+					.logError(

+							"Expression problem:" + message + "body:" + body(), throwable); //$NON-NLS-1$ //$NON-NLS-2$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public IStatus getStatus() {

+		return status;

+	}

+

+	/**

+	 * @generated

+	 */

+	private final String myBody;

+

+	/**

+	 * @generated

+	 */

+	public String body() {

+		return myBody;

+	}

+

+	/**

+	 * @generated

+	 */

+	private final EClassifier myContext;

+

+	/**

+	 * @generated

+	 */

+	public EClassifier context() {

+		return myContext;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ComrelAbstractExpression(String body, EClassifier context) {

+		myBody = body;

+		myContext = context;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	protected abstract Object doEvaluate(Object context, Map env);

+

+	/**

+	 * @generated

+	 */

+	public Object evaluate(Object context) {

+		return evaluate(context, Collections.EMPTY_MAP);

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	public Object evaluate(Object context, Map env) {

+		if (context().isInstance(context)) {

+			try {

+				return doEvaluate(context, env);

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Expression evaluation failure: " + body(), e); //$NON-NLS-1$

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Expression may return number value which is not directly compatible with feature type (e.g. Double when Integer is expected), or EEnumLiteral meta-object when literal instance is expected

+	 * @generated

+	 */

+	public static Object performCast(Object value, EDataType targetType) {

+		if (targetType instanceof EEnum) {

+			if (value instanceof EEnumLiteral) {

+				EEnumLiteral literal = (EEnumLiteral) value;

+				return (literal.getInstance() != null) ? literal.getInstance()

+						: literal;

+			}

+		}

+		if (false == value instanceof Number || targetType == null

+				|| targetType.getInstanceClass() == null) {

+			return value;

+		}

+		Class<?> targetClass = targetType.getInstanceClass();

+		Number num = (Number) value;

+		Class<?> valClass = value.getClass();

+		Class<?> targetWrapperClass = targetClass;

+		if (targetClass.isPrimitive()) {

+			targetWrapperClass = EcoreUtil.wrapperClassFor(targetClass);

+		}

+		if (valClass.equals(targetWrapperClass)) {

+			return value;

+		}

+		if (Number.class.isAssignableFrom(targetWrapperClass)) {

+			if (targetWrapperClass.equals(Byte.class))

+				return new Byte(num.byteValue());

+			if (targetWrapperClass.equals(Integer.class))

+				return new Integer(num.intValue());

+			if (targetWrapperClass.equals(Short.class))

+				return new Short(num.shortValue());

+			if (targetWrapperClass.equals(Long.class))

+				return new Long(num.longValue());

+			if (targetWrapperClass.equals(BigInteger.class))

+				return BigInteger.valueOf(num.longValue());

+			if (targetWrapperClass.equals(Float.class))

+				return new Float(num.floatValue());

+			if (targetWrapperClass.equals(Double.class))

+				return new Double(num.doubleValue());

+			if (targetWrapperClass.equals(BigDecimal.class))

+				return new BigDecimal(num.doubleValue());

+		}

+		return value;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/expressions/ComrelOCLFactory.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/expressions/ComrelOCLFactory.java
new file mode 100644
index 0000000..a1df11f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/expressions/ComrelOCLFactory.java
@@ -0,0 +1,174 @@
+/*

+ * 

+ */

+package comrel.diagram.expressions;

+

+import java.util.Collections;

+import java.util.Map;

+

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.emf.ecore.EClassifier;

+import org.eclipse.emf.ecore.EParameter;

+import org.eclipse.emf.ecore.EcorePackage;

+import org.eclipse.ocl.Environment;

+import org.eclipse.ocl.EvaluationEnvironment;

+import org.eclipse.ocl.ParserException;

+import org.eclipse.ocl.ecore.EcoreFactory;

+import org.eclipse.ocl.ecore.OCLExpression;

+import org.eclipse.ocl.ecore.Variable;

+import org.eclipse.ocl.ecore.OCL.Helper;

+import org.eclipse.ocl.options.ParsingOptions;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class ComrelOCLFactory {

+

+	/**

+	 * @generated

+	 */

+	private final ComrelAbstractExpression[] expressions;

+

+	/**

+	 * @generated

+	 */

+	protected ComrelOCLFactory() {

+		this.expressions = new ComrelAbstractExpression[3];

+	}

+

+	/**

+	 * @generated

+	 */

+	public static ComrelAbstractExpression getExpression(int index,

+			EClassifier context, Map<String, EClassifier> environment) {

+		ComrelOCLFactory cached = ComrelDiagramEditorPlugin.getInstance()

+				.getComrelOCLFactory();

+		if (cached == null) {

+			ComrelDiagramEditorPlugin.getInstance().setComrelOCLFactory(

+					cached = new ComrelOCLFactory());

+		}

+		if (index < 0 || index >= cached.expressions.length) {

+			throw new IllegalArgumentException();

+		}

+		if (cached.expressions[index] == null) {

+			final String[] exprBodies = new String[] { "self<>oppositeEnd", //$NON-NLS-1$

+					"self<>oppositeEnd", //$NON-NLS-1$

+					"self<>oppositeEnd", //$NON-NLS-1$

+			};

+			cached.expressions[index] = getExpression(

+					exprBodies[index],

+					context,

+					environment == null ? Collections

+							.<String, EClassifier> emptyMap() : environment);

+		}

+		return cached.expressions[index];

+	}

+

+	/**

+	 * This is factory method, callers are responsible to keep reference to the return value if they want to reuse parsed expression

+	 * @generated

+	 */

+	public static ComrelAbstractExpression getExpression(String body,

+			EClassifier context, Map<String, EClassifier> environment) {

+		return new Expression(body, context, environment);

+	}

+

+	/**

+	 * This method will become private in the next release

+	 * @generated

+	 */

+	public static ComrelAbstractExpression getExpression(String body,

+			EClassifier context) {

+		return getExpression(body, context,

+				Collections.<String, EClassifier> emptyMap());

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class Expression extends ComrelAbstractExpression {

+

+		/**

+		 * @generated

+		 */

+		private final org.eclipse.ocl.ecore.OCL oclInstance;

+

+		/**

+		 * @generated

+		 */

+		private OCLExpression oclExpression;

+

+		/**

+		 * @generated

+		 */

+		public Expression(String body, EClassifier context,

+				Map<String, EClassifier> environment) {

+			super(body, context);

+			oclInstance = org.eclipse.ocl.ecore.OCL.newInstance();

+			initCustomEnv(oclInstance.getEnvironment(), environment);

+			Helper oclHelper = oclInstance.createOCLHelper();

+			oclHelper.setContext(context());

+			try {

+				oclExpression = oclHelper.createQuery(body());

+				setStatus(IStatus.OK, null, null);

+			} catch (ParserException e) {

+				setStatus(IStatus.ERROR, e.getMessage(), e);

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		@SuppressWarnings("rawtypes")

+		protected Object doEvaluate(Object context, Map env) {

+			if (oclExpression == null) {

+				return null;

+			}

+			// on the first call, both evalEnvironment and extentMap are clear, for later we have finally, below.

+			EvaluationEnvironment<?, ?, ?, ?, ?> evalEnv = oclInstance

+					.getEvaluationEnvironment();

+			// initialize environment

+			for (Object nextKey : env.keySet()) {

+				evalEnv.replace((String) nextKey, env.get(nextKey));

+			}

+			try {

+				Object result = oclInstance.evaluate(context, oclExpression);

+				return oclInstance.isInvalid(result) ? null : result;

+			} finally {

+				evalEnv.clear();

+				oclInstance.setExtentMap(null); // clear allInstances cache, and get the oclInstance ready for the next call

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		private static void initCustomEnv(

+				Environment<?, EClassifier, ?, ?, ?, EParameter, ?, ?, ?, ?, ?, ?> ecoreEnv,

+				Map<String, EClassifier> environment) {

+			// Use EObject as implicit root class for any object, to allow eContainer() and other EObject operations from OCL expressions

+			ParsingOptions.setOption(ecoreEnv,

+					ParsingOptions.implicitRootClass(ecoreEnv),

+					EcorePackage.eINSTANCE.getEObject());

+			for (String varName : environment.keySet()) {

+				EClassifier varType = environment.get(varName);

+				ecoreEnv.addElement(varName,

+						createVar(ecoreEnv, varName, varType), false);

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		private static Variable createVar(

+				Environment<?, EClassifier, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?> ecoreEnv,

+				String name, EClassifier type) {

+			Variable var = EcoreFactory.eINSTANCE.createVariable();

+			var.setName(name);

+			var.setType(ecoreEnv.getUMLReflection().getOCLType(type));

+			return var;

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/layoutprovider/CompositeRefactoringDefaultLayoutProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/layoutprovider/CompositeRefactoringDefaultLayoutProvider.java
new file mode 100644
index 0000000..144b871
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/layoutprovider/CompositeRefactoringDefaultLayoutProvider.java
@@ -0,0 +1,38 @@
+package comrel.diagram.layoutprovider;

+

+import java.util.Iterator;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.diagram.ui.providers.LeftRightProvider;

+import org.eclipse.gmf.runtime.diagram.ui.services.layout.ILayoutNode;

+import org.eclipse.gmf.runtime.diagram.ui.services.layout.ILayoutNodeOperation;

+import org.eclipse.gmf.runtime.diagram.ui.services.layout.LayoutType;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+

+public class CompositeRefactoringDefaultLayoutProvider extends LeftRightProvider {

+    public static String DEFAULT_LAYOUT = "Default";

+

+    public boolean provides(IOperation operation) {

+        // enable this provider only on mindmap diagrams

+        if (operation instanceof ILayoutNodeOperation) {

+            Iterator nodes = ((ILayoutNodeOperation) operation)

+                .getLayoutNodes().listIterator();

+            if (nodes.hasNext()) {

+                View node = ((ILayoutNode) nodes.next()).getNode();

+                Diagram container = node.getDiagram();

+                if (container == null

+                    || !(container.getType().equals("Mindmap"))) //$NON-NLS-1$

+                    return false;

+            }

+        } else {

+            return false;

+        }

+        IAdaptable layoutHint = ((ILayoutNodeOperation) operation)

+            .getLayoutHint();

+        String layoutType = (String) layoutHint.getAdapter(String.class);

+        return LayoutType.DEFAULT.equals(layoutType);

+    }

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelAbstractNavigatorItem.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelAbstractNavigatorItem.java
new file mode 100644
index 0000000..fd67796
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelAbstractNavigatorItem.java
@@ -0,0 +1,61 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.core.runtime.IAdapterFactory;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.core.runtime.PlatformObject;

+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;

+

+/**

+ * @generated

+ */

+public abstract class ComrelAbstractNavigatorItem extends PlatformObject {

+

+	/**

+	 * @generated

+	 */

+	static {

+		final Class[] supportedTypes = new Class[] { ITabbedPropertySheetPageContributor.class };

+		final ITabbedPropertySheetPageContributor propertySheetPageContributor = new ITabbedPropertySheetPageContributor() {

+			public String getContributorId() {

+				return "comrel.diagram"; //$NON-NLS-1$

+			}

+		};

+		Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {

+

+			public Object getAdapter(Object adaptableObject, Class adapterType) {

+				if (adaptableObject instanceof comrel.diagram.navigator.ComrelAbstractNavigatorItem

+						&& adapterType == ITabbedPropertySheetPageContributor.class) {

+					return propertySheetPageContributor;

+				}

+				return null;

+			}

+

+			public Class[] getAdapterList() {

+				return supportedTypes;

+			}

+		}, comrel.diagram.navigator.ComrelAbstractNavigatorItem.class);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Object myParent;

+

+	/**

+	 * @generated

+	 */

+	protected ComrelAbstractNavigatorItem(Object parent) {

+		myParent = parent;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object getParent() {

+		return myParent;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorContentProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorContentProvider.java
new file mode 100644
index 0000000..d2a535d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorContentProvider.java
@@ -0,0 +1,233 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;

+import org.eclipse.jface.viewers.Viewer;

+import org.eclipse.ui.IMemento;

+import org.eclipse.ui.navigator.ICommonContentExtensionSite;

+import org.eclipse.ui.navigator.ICommonContentProvider;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class ComrelDomainNavigatorContentProvider implements

+		ICommonContentProvider {

+

+	/**

+	 * @generated

+	 */

+	private AdapterFactoryContentProvider myAdapterFctoryContentProvier;

+

+	/**

+	 * @generated

+	 */

+	private static final Object[] EMPTY_ARRAY = new Object[0];

+

+	/**

+	 * @generated

+	 */

+	private Viewer myViewer;

+

+	/**

+	 * @generated

+	 */

+	private AdapterFactoryEditingDomain myEditingDomain;

+

+	/**

+	 * @generated

+	 */

+	private WorkspaceSynchronizer myWorkspaceSynchronizer;

+

+	/**

+	 * @generated

+	 */

+	private Runnable myViewerRefreshRunnable;

+

+	/**

+	 * @generated

+	 */

+	public ComrelDomainNavigatorContentProvider() {

+		myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(

+				ComrelDiagramEditorPlugin.getInstance()

+						.getItemProvidersAdapterFactory());

+		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE

+				.createEditingDomain();

+		myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;

+		myEditingDomain.setResourceToReadOnlyMap(new HashMap() {

+			public Object get(Object key) {

+				if (!containsKey(key)) {

+					put(key, Boolean.TRUE);

+				}

+				return super.get(key);

+			}

+		});

+		myViewerRefreshRunnable = new Runnable() {

+			public void run() {

+				if (myViewer != null) {

+					myViewer.refresh();

+				}

+			}

+		};

+		myWorkspaceSynchronizer = new WorkspaceSynchronizer(editingDomain,

+				new WorkspaceSynchronizer.Delegate() {

+					public void dispose() {

+					}

+

+					public boolean handleResourceChanged(final Resource resource) {

+						unloadAllResources();

+						asyncRefresh();

+						return true;

+					}

+

+					public boolean handleResourceDeleted(Resource resource) {

+						unloadAllResources();

+						asyncRefresh();

+						return true;

+					}

+

+					public boolean handleResourceMoved(Resource resource,

+							final URI newURI) {

+						unloadAllResources();

+						asyncRefresh();

+						return true;

+					}

+				});

+	}

+

+	/**

+	 * @generated

+	 */

+	public void dispose() {

+		myWorkspaceSynchronizer.dispose();

+		myWorkspaceSynchronizer = null;

+		myViewerRefreshRunnable = null;

+		myViewer = null;

+		unloadAllResources();

+		((TransactionalEditingDomain) myEditingDomain).dispose();

+		myEditingDomain = null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

+		myViewer = viewer;

+	}

+

+	/**

+	 * @generated

+	 */

+	void unloadAllResources() {

+		for (Resource nextResource : myEditingDomain.getResourceSet()

+				.getResources()) {

+			nextResource.unload();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	void asyncRefresh() {

+		if (myViewer != null && !myViewer.getControl().isDisposed()) {

+			myViewer.getControl().getDisplay()

+					.asyncExec(myViewerRefreshRunnable);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object[] getElements(Object inputElement) {

+		return getChildren(inputElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void restoreState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void saveState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void init(ICommonContentExtensionSite aConfig) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object[] getChildren(Object parentElement) {

+		if (parentElement instanceof IFile) {

+			IFile file = (IFile) parentElement;

+			URI fileURI = URI.createPlatformResourceURI(file.getFullPath()

+					.toString(), true);

+			Resource resource = myEditingDomain.getResourceSet().getResource(

+					fileURI, true);

+			return wrapEObjects(

+					myAdapterFctoryContentProvier.getChildren(resource),

+					parentElement);

+		}

+

+		if (parentElement instanceof ComrelDomainNavigatorItem) {

+			return wrapEObjects(

+					myAdapterFctoryContentProvier.getChildren(((ComrelDomainNavigatorItem) parentElement)

+							.getEObject()), parentElement);

+		}

+		return EMPTY_ARRAY;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object[] wrapEObjects(Object[] objects, Object parentElement) {

+		Collection result = new ArrayList();

+		for (int i = 0; i < objects.length; i++) {

+			if (objects[i] instanceof EObject) {

+				result.add(new ComrelDomainNavigatorItem((EObject) objects[i],

+						parentElement, myAdapterFctoryContentProvier));

+			}

+		}

+		return result.toArray();

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object getParent(Object element) {

+		if (element instanceof ComrelAbstractNavigatorItem) {

+			ComrelAbstractNavigatorItem abstractNavigatorItem = (ComrelAbstractNavigatorItem) element;

+			return abstractNavigatorItem.getParent();

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean hasChildren(Object element) {

+		return element instanceof IFile || getChildren(element).length > 0;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorItem.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorItem.java
new file mode 100644
index 0000000..130f676
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorItem.java
@@ -0,0 +1,116 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.core.runtime.IAdapterFactory;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.core.runtime.PlatformObject;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.ui.views.properties.IPropertySource;

+import org.eclipse.ui.views.properties.IPropertySourceProvider;

+

+/**

+ * @generated

+ */

+public class ComrelDomainNavigatorItem extends PlatformObject {

+

+	/**

+	 * @generated

+	 */

+	static {

+		final Class[] supportedTypes = new Class[] { EObject.class,

+				IPropertySource.class };

+		Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {

+

+			public Object getAdapter(Object adaptableObject, Class adapterType) {

+				if (adaptableObject instanceof comrel.diagram.navigator.ComrelDomainNavigatorItem) {

+					comrel.diagram.navigator.ComrelDomainNavigatorItem domainNavigatorItem = (comrel.diagram.navigator.ComrelDomainNavigatorItem) adaptableObject;

+					EObject eObject = domainNavigatorItem.getEObject();

+					if (adapterType == EObject.class) {

+						return eObject;

+					}

+					if (adapterType == IPropertySource.class) {

+						return domainNavigatorItem.getPropertySourceProvider()

+								.getPropertySource(eObject);

+					}

+				}

+

+				return null;

+			}

+

+			public Class[] getAdapterList() {

+				return supportedTypes;

+			}

+		}, comrel.diagram.navigator.ComrelDomainNavigatorItem.class);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Object myParent;

+

+	/**

+	 * @generated

+	 */

+	private EObject myEObject;

+

+	/**

+	 * @generated

+	 */

+	private IPropertySourceProvider myPropertySourceProvider;

+

+	/**

+	 * @generated

+	 */

+	public ComrelDomainNavigatorItem(EObject eObject, Object parent,

+			IPropertySourceProvider propertySourceProvider) {

+		myParent = parent;

+		myEObject = eObject;

+		myPropertySourceProvider = propertySourceProvider;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object getParent() {

+		return myParent;

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject getEObject() {

+		return myEObject;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IPropertySourceProvider getPropertySourceProvider() {

+		return myPropertySourceProvider;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean equals(Object obj) {

+		if (obj instanceof comrel.diagram.navigator.ComrelDomainNavigatorItem) {

+			return EcoreUtil

+					.getURI(getEObject())

+					.equals(EcoreUtil

+							.getURI(((comrel.diagram.navigator.ComrelDomainNavigatorItem) obj)

+									.getEObject()));

+		}

+		return super.equals(obj);

+	}

+

+	/**

+	 * @generated

+	 */

+	public int hashCode() {

+		return EcoreUtil.getURI(getEObject()).hashCode();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorLabelProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorLabelProvider.java
new file mode 100644
index 0000000..c55e222
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelDomainNavigatorLabelProvider.java
@@ -0,0 +1,103 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;

+import org.eclipse.jface.viewers.ILabelProviderListener;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.ui.IMemento;

+import org.eclipse.ui.navigator.ICommonContentExtensionSite;

+import org.eclipse.ui.navigator.ICommonLabelProvider;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class ComrelDomainNavigatorLabelProvider implements ICommonLabelProvider {

+

+	/**

+	 * @generated

+	 */

+	private AdapterFactoryLabelProvider myAdapterFactoryLabelProvider = new AdapterFactoryLabelProvider(

+			ComrelDiagramEditorPlugin.getInstance()

+					.getItemProvidersAdapterFactory());

+

+	/**

+	 * @generated

+	 */

+	public void init(ICommonContentExtensionSite aConfig) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public Image getImage(Object element) {

+		if (element instanceof ComrelDomainNavigatorItem) {

+			return myAdapterFactoryLabelProvider

+					.getImage(((ComrelDomainNavigatorItem) element)

+							.getEObject());

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getText(Object element) {

+		if (element instanceof ComrelDomainNavigatorItem) {

+			return myAdapterFactoryLabelProvider

+					.getText(((ComrelDomainNavigatorItem) element).getEObject());

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void addListener(ILabelProviderListener listener) {

+		myAdapterFactoryLabelProvider.addListener(listener);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void dispose() {

+		myAdapterFactoryLabelProvider.dispose();

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isLabelProperty(Object element, String property) {

+		return myAdapterFactoryLabelProvider.isLabelProperty(element, property);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void removeListener(ILabelProviderListener listener) {

+		myAdapterFactoryLabelProvider.removeListener(listener);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void restoreState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void saveState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getDescription(Object anElement) {

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorActionProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorActionProvider.java
new file mode 100644
index 0000000..d34e194
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorActionProvider.java
@@ -0,0 +1,180 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.common.ui.URIEditorInput;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.action.Action;

+import org.eclipse.jface.action.IMenuManager;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.ui.IActionBars;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.PartInitException;

+import org.eclipse.ui.navigator.CommonActionProvider;

+import org.eclipse.ui.navigator.ICommonActionConstants;

+import org.eclipse.ui.navigator.ICommonActionExtensionSite;

+import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;

+import org.eclipse.ui.part.FileEditorInput;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.part.ComrelDiagramEditor;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorActionProvider extends CommonActionProvider {

+

+	/**

+	 * @generated

+	 */

+	private boolean myContribute;

+

+	/**

+	 * @generated

+	 */

+	private OpenDiagramAction myOpenDiagramAction;

+

+	/**

+	 * @generated

+	 */

+	public void init(ICommonActionExtensionSite aSite) {

+		super.init(aSite);

+		if (aSite.getViewSite() instanceof ICommonViewerWorkbenchSite) {

+			myContribute = true;

+			makeActions((ICommonViewerWorkbenchSite) aSite.getViewSite());

+		} else {

+			myContribute = false;

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private void makeActions(ICommonViewerWorkbenchSite viewerSite) {

+		myOpenDiagramAction = new OpenDiagramAction(viewerSite);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void fillActionBars(IActionBars actionBars) {

+		if (!myContribute) {

+			return;

+		}

+		IStructuredSelection selection = (IStructuredSelection) getContext()

+				.getSelection();

+		myOpenDiagramAction.selectionChanged(selection);

+		if (myOpenDiagramAction.isEnabled()) {

+			actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN,

+					myOpenDiagramAction);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void fillContextMenu(IMenuManager menu) {

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class OpenDiagramAction extends Action {

+

+		/**

+		 * @generated

+		 */

+		private Diagram myDiagram;

+

+		/**

+		 * @generated

+		 */

+		private ICommonViewerWorkbenchSite myViewerSite;

+

+		/**

+		 * @generated

+		 */

+		public OpenDiagramAction(ICommonViewerWorkbenchSite viewerSite) {

+			super(Messages.NavigatorActionProvider_OpenDiagramActionName);

+			myViewerSite = viewerSite;

+		}

+

+		/**

+		 * @generated

+		 */

+		public final void selectionChanged(IStructuredSelection selection) {

+			myDiagram = null;

+			if (selection.size() == 1) {

+				Object selectedElement = selection.getFirstElement();

+				if (selectedElement instanceof ComrelNavigatorItem) {

+					selectedElement = ((ComrelNavigatorItem) selectedElement)

+							.getView();

+				} else if (selectedElement instanceof IAdaptable) {

+					selectedElement = ((IAdaptable) selectedElement)

+							.getAdapter(View.class);

+				}

+				if (selectedElement instanceof Diagram) {

+					Diagram diagram = (Diagram) selectedElement;

+					if (CompositeRefactoringEditPart.MODEL_ID

+							.equals(ComrelVisualIDRegistry.getModelID(diagram))) {

+						myDiagram = diagram;

+					}

+				}

+			}

+			setEnabled(myDiagram != null);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void run() {

+			if (myDiagram == null || myDiagram.eResource() == null) {

+				return;

+			}

+

+			IEditorInput editorInput = getEditorInput(myDiagram);

+			IWorkbenchPage page = myViewerSite.getPage();

+			try {

+				page.openEditor(editorInput, ComrelDiagramEditor.ID);

+			} catch (PartInitException e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Exception while openning diagram", e); //$NON-NLS-1$

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		private static IEditorInput getEditorInput(Diagram diagram) {

+			Resource diagramResource = diagram.eResource();

+			for (EObject nextEObject : diagramResource.getContents()) {

+				if (nextEObject == diagram) {

+					return new FileEditorInput(

+							WorkspaceSynchronizer.getFile(diagramResource));

+				}

+				if (nextEObject instanceof Diagram) {

+					break;

+				}

+			}

+			URI uri = EcoreUtil.getURI(diagram);

+			String editorName = uri.lastSegment() + '#'

+					+ diagram.eResource().getContents().indexOf(diagram);

+			IEditorInput editorInput = new URIEditorInput(uri, editorName);

+			return editorInput;

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorContentProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorContentProvider.java
new file mode 100644
index 0000000..52559f8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorContentProvider.java
@@ -0,0 +1,6162 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.LinkedList;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.viewers.Viewer;

+import org.eclipse.ui.IMemento;

+import org.eclipse.ui.navigator.ICommonContentExtensionSite;

+import org.eclipse.ui.navigator.ICommonContentProvider;

+

+import comrel.diagram.edit.parts.*;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorContentProvider implements ICommonContentProvider {

+

+	/**

+	 * @generated

+	 */

+	private static final Object[] EMPTY_ARRAY = new Object[0];

+

+	/**

+	 * @generated

+	 */

+	private Viewer myViewer;

+

+	/**

+	 * @generated

+	 */

+	private AdapterFactoryEditingDomain myEditingDomain;

+

+	/**

+	 * @generated

+	 */

+	private WorkspaceSynchronizer myWorkspaceSynchronizer;

+

+	/**

+	 * @generated

+	 */

+	private Runnable myViewerRefreshRunnable;

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings({ "unchecked", "serial", "rawtypes" })

+	public ComrelNavigatorContentProvider() {

+		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE

+				.createEditingDomain();

+		myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;

+		myEditingDomain.setResourceToReadOnlyMap(new HashMap() {

+			public Object get(Object key) {

+				if (!containsKey(key)) {

+					put(key, Boolean.TRUE);

+				}

+				return super.get(key);

+			}

+		});

+		myViewerRefreshRunnable = new Runnable() {

+			public void run() {

+				if (myViewer != null) {

+					myViewer.refresh();

+				}

+			}

+		};

+		myWorkspaceSynchronizer = new WorkspaceSynchronizer(editingDomain,

+				new WorkspaceSynchronizer.Delegate() {

+					public void dispose() {

+					}

+

+					public boolean handleResourceChanged(final Resource resource) {

+						unloadAllResources();

+						asyncRefresh();

+						return true;

+					}

+

+					public boolean handleResourceDeleted(Resource resource) {

+						unloadAllResources();

+						asyncRefresh();

+						return true;

+					}

+

+					public boolean handleResourceMoved(Resource resource,

+							final URI newURI) {

+						unloadAllResources();

+						asyncRefresh();

+						return true;

+					}

+				});

+	}

+

+	/**

+	 * @generated

+	 */

+	public void dispose() {

+		myWorkspaceSynchronizer.dispose();

+		myWorkspaceSynchronizer = null;

+		myViewerRefreshRunnable = null;

+		myViewer = null;

+		unloadAllResources();

+		((TransactionalEditingDomain) myEditingDomain).dispose();

+		myEditingDomain = null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

+		myViewer = viewer;

+	}

+

+	/**

+	 * @generated

+	 */

+	void unloadAllResources() {

+		for (Resource nextResource : myEditingDomain.getResourceSet()

+				.getResources()) {

+			nextResource.unload();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	void asyncRefresh() {

+		if (myViewer != null && !myViewer.getControl().isDisposed()) {

+			myViewer.getControl().getDisplay()

+					.asyncExec(myViewerRefreshRunnable);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object[] getElements(Object inputElement) {

+		return getChildren(inputElement);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void restoreState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void saveState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void init(ICommonContentExtensionSite aConfig) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object[] getChildren(Object parentElement) {

+		if (parentElement instanceof IFile) {

+			IFile file = (IFile) parentElement;

+			URI fileURI = URI.createPlatformResourceURI(file.getFullPath()

+					.toString(), true);

+			Resource resource = myEditingDomain.getResourceSet().getResource(

+					fileURI, true);

+			ArrayList<ComrelNavigatorItem> result = new ArrayList<ComrelNavigatorItem>();

+			ArrayList<View> topViews = new ArrayList<View>(resource

+					.getContents().size());

+			for (EObject o : resource.getContents()) {

+				if (o instanceof View) {

+					topViews.add((View) o);

+				}

+			}

+			result.addAll(createNavigatorItems(

+					selectViewsByType(topViews,

+							CompositeRefactoringEditPart.MODEL_ID), file, false));

+			return result.toArray();

+		}

+

+		if (parentElement instanceof ComrelNavigatorGroup) {

+			ComrelNavigatorGroup group = (ComrelNavigatorGroup) parentElement;

+			return group.getChildren();

+		}

+

+		if (parentElement instanceof ComrelNavigatorItem) {

+			ComrelNavigatorItem navigatorItem = (ComrelNavigatorItem) parentElement;

+			if (navigatorItem.isLeaf() || !isOwnView(navigatorItem.getView())) {

+				return EMPTY_ARRAY;

+			}

+			return getViewChildren(navigatorItem.getView(), parentElement);

+		}

+

+		/*

+		 * Due to plugin.xml restrictions this code will be called only for views representing

+		 * shortcuts to this diagram elements created on other diagrams. 

+		 */

+		if (parentElement instanceof IAdaptable) {

+			View view = (View) ((IAdaptable) parentElement)

+					.getAdapter(View.class);

+			if (view != null) {

+				return getViewChildren(view, parentElement);

+			}

+		}

+

+		return EMPTY_ARRAY;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Object[] getViewChildren(View view, Object parentElement) {

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+

+		case CompositeRefactoringEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			result.addAll(getForeignShortcuts((Diagram) view, parentElement));

+			Diagram sv = (Diagram) view;

+			ComrelNavigatorGroup links = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_CompositeRefactoring_1000_links,

+					"icons/linksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(AtomicUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getDiagramLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			links.addChildren(createNavigatorItems(connectedViews, links, false));

+			connectedViews = getDiagramLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			links.addChildren(createNavigatorItems(connectedViews, links, false));

+			connectedViews = getDiagramLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			links.addChildren(createNavigatorItems(connectedViews, links, false));

+			if (!links.isEmpty()) {

+				result.add(links);

+			}

+			return result.toArray();

+		}

+

+		case SingleInputPort4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3009_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3009_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnit6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case AtomicUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnit7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleQueuedUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFilterUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SinglePortMappingEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Edge sv = (Edge) view;

+			ComrelNavigatorGroup target = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SinglePortMapping_4001_target,

+					"icons/linkTargetNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup source = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SinglePortMapping_4001_source,

+					"icons/linkSourceNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPortEditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPortEditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPortEditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPort2EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			if (!target.isEmpty()) {

+				result.add(target);

+			}

+			if (!source.isEmpty()) {

+				result.add(source);

+			}

+			return result.toArray();

+		}

+

+		case SequentialUnit7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ConditionalUnit6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case AtomicUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFeatureUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ConditionalUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFeatureUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case AtomicUnit6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFeatureUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ConditionalUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFeatureUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SequentialUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case AtomicUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFeatureUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleInputPort8EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3031_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3031_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SingleInputPort5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3013_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3013_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiFilterUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiInputPort4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3014_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3014_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFeatureUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiInputPort9EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3032_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3032_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiInputPort7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3024_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3024_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case ConditionalUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SequentialUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleInputPort2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3001_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3001_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SingleInputPort9EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3035_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3035_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiInputPort3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3010_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3010_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case ConditionalUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFilterUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleOutputPortEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleOutputPort_3011_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiFilterUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFeatureUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFilterUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFeatureUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleQueuedUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SequentialUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleQueuedUnit6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleQueuedUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFilterUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFilterUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SequentialUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiInputPort8EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3028_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3028_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SingleQueuedUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiInputPort5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3017_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3017_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SingleInputPort3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3005_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3005_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SingleQueuedUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnit7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case AtomicUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiInputPortEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3002_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3002_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SequentialUnit6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFeatureUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFilterUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleInputPort6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3023_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3023_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case CartesianQueuedUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnitEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnit6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleInputPort7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3027_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_3027_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiInputPort2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3006_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3006_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case SingleInputPortEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_2001_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleInputPort_2001_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiFilterUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SequentialUnit2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ConditionalUnit7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleFilterUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleOutputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiFeatureUnit3EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnitEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiOutputPortEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiOutputPort_3015_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case AtomicUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case ParallelQueuedUnit4EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiPortMappingEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Edge sv = (Edge) view;

+			ComrelNavigatorGroup target = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiPortMapping_4002_target,

+					"icons/linkTargetNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup source = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiPortMapping_4002_source,

+					"icons/linkSourceNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			if (!target.isEmpty()) {

+				result.add(target);

+			}

+			if (!source.isEmpty()) {

+				result.add(source);

+			}

+			return result.toArray();

+		}

+

+		case MultiInputPort6EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup incominglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3020_incominglinks,

+					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiInputPort_3020_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getIncomingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			incominglinks.addChildren(createNavigatorItems(connectedViews,

+					incominglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!incominglinks.isEmpty()) {

+				result.add(incominglinks);

+			}

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case MultiSinglePortMappingEditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Edge sv = (Edge) view;

+			ComrelNavigatorGroup target = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiSinglePortMapping_4003_target,

+					"icons/linkTargetNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			ComrelNavigatorGroup source = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiSinglePortMapping_4003_source,

+					"icons/linkSourceNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPortEditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort2EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort3EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort4EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort5EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort7EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksTargetByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			target.addChildren(createNavigatorItems(connectedViews, target,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPortEditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort2EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort3EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort4EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPortEditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort5EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort6EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiOutputPort2EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort8EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			connectedViews = getLinksSourceByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			source.addChildren(createNavigatorItems(connectedViews, source,

+					true));

+			if (!target.isEmpty()) {

+				result.add(target);

+			}

+			if (!source.isEmpty()) {

+				result.add(source);

+			}

+			return result.toArray();

+		}

+

+		case SingleQueuedUnit7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case SingleOutputPort2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_SingleOutputPort_3018_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case ConditionalUnit5EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort8EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit5EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(SequentialUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(ConditionCheckEditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit6EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			connectedViews = getChildrenByType(

+					Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID));

+			connectedViews = getChildrenByType(connectedViews,

+					ComrelVisualIDRegistry

+							.getType(AtomicUnit7EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+

+		case MultiOutputPort2EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			ComrelNavigatorGroup outgoinglinks = new ComrelNavigatorGroup(

+					Messages.NavigatorGroupName_MultiOutputPort_3021_outgoinglinks,

+					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$

+			Collection<View> connectedViews;

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiPortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			connectedViews = getOutgoingLinksByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+			outgoinglinks.addChildren(createNavigatorItems(connectedViews,

+					outgoinglinks, true));

+			if (!outgoinglinks.isEmpty()) {

+				result.add(outgoinglinks);

+			}

+			return result.toArray();

+		}

+

+		case AtomicUnit7EditPart.VISUAL_ID: {

+			LinkedList<ComrelAbstractNavigatorItem> result = new LinkedList<ComrelAbstractNavigatorItem>();

+			Node sv = (Node) view;

+			Collection<View> connectedViews;

+			connectedViews = getChildrenByType(Collections.singleton(sv),

+					ComrelVisualIDRegistry

+							.getType(SingleInputPort9EditPart.VISUAL_ID));

+			result.addAll(createNavigatorItems(connectedViews, parentElement,

+					false));

+			return result.toArray();

+		}

+		}

+		return EMPTY_ARRAY;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<View> getLinksSourceByType(Collection<Edge> edges,

+			String type) {

+		LinkedList<View> result = new LinkedList<View>();

+		for (Edge nextEdge : edges) {

+			View nextEdgeSource = nextEdge.getSource();

+			if (type.equals(nextEdgeSource.getType())

+					&& isOwnView(nextEdgeSource)) {

+				result.add(nextEdgeSource);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<View> getLinksTargetByType(Collection<Edge> edges,

+			String type) {

+		LinkedList<View> result = new LinkedList<View>();

+		for (Edge nextEdge : edges) {

+			View nextEdgeTarget = nextEdge.getTarget();

+			if (type.equals(nextEdgeTarget.getType())

+					&& isOwnView(nextEdgeTarget)) {

+				result.add(nextEdgeTarget);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<View> getOutgoingLinksByType(

+			Collection<? extends View> nodes, String type) {

+		LinkedList<View> result = new LinkedList<View>();

+		for (View nextNode : nodes) {

+			result.addAll(selectViewsByType(nextNode.getSourceEdges(), type));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<View> getIncomingLinksByType(

+			Collection<? extends View> nodes, String type) {

+		LinkedList<View> result = new LinkedList<View>();

+		for (View nextNode : nodes) {

+			result.addAll(selectViewsByType(nextNode.getTargetEdges(), type));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<View> getChildrenByType(

+			Collection<? extends View> nodes, String type) {

+		LinkedList<View> result = new LinkedList<View>();

+		for (View nextNode : nodes) {

+			result.addAll(selectViewsByType(nextNode.getChildren(), type));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<View> getDiagramLinksByType(

+			Collection<Diagram> diagrams, String type) {

+		ArrayList<View> result = new ArrayList<View>();

+		for (Diagram nextDiagram : diagrams) {

+			result.addAll(selectViewsByType(nextDiagram.getEdges(), type));

+		}

+		return result;

+	}

+

+	// TODO refactor as static method

+	/**

+	 * @generated

+	 */

+	private Collection<View> selectViewsByType(Collection<View> views,

+			String type) {

+		ArrayList<View> result = new ArrayList<View>();

+		for (View nextView : views) {

+			if (type.equals(nextView.getType()) && isOwnView(nextView)) {

+				result.add(nextView);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isOwnView(View view) {

+		return CompositeRefactoringEditPart.MODEL_ID

+				.equals(ComrelVisualIDRegistry.getModelID(view));

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<ComrelNavigatorItem> createNavigatorItems(

+			Collection<View> views, Object parent, boolean isLeafs) {

+		ArrayList<ComrelNavigatorItem> result = new ArrayList<ComrelNavigatorItem>(

+				views.size());

+		for (View nextView : views) {

+			result.add(new ComrelNavigatorItem(nextView, parent, isLeafs));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Collection<ComrelNavigatorItem> getForeignShortcuts(

+			Diagram diagram, Object parent) {

+		LinkedList<View> result = new LinkedList<View>();

+		for (Iterator<View> it = diagram.getChildren().iterator(); it.hasNext();) {

+			View nextView = it.next();

+			if (!isOwnView(nextView)

+					&& nextView.getEAnnotation("Shortcut") != null) { //$NON-NLS-1$

+				result.add(nextView);

+			}

+		}

+		return createNavigatorItems(result, parent, false);

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object getParent(Object element) {

+		if (element instanceof ComrelAbstractNavigatorItem) {

+			ComrelAbstractNavigatorItem abstractNavigatorItem = (ComrelAbstractNavigatorItem) element;

+			return abstractNavigatorItem.getParent();

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean hasChildren(Object element) {

+		return element instanceof IFile || getChildren(element).length > 0;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorGroup.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorGroup.java
new file mode 100644
index 0000000..488b217
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorGroup.java
@@ -0,0 +1,100 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import java.util.Collection;

+import java.util.LinkedList;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorGroup extends ComrelAbstractNavigatorItem {

+

+	/**

+	 * @generated

+	 */

+	private String myGroupName;

+

+	/**

+	 * @generated

+	 */

+	private String myIcon;

+

+	/**

+	 * @generated

+	 */

+	private Collection myChildren = new LinkedList();

+

+	/**

+	 * @generated

+	 */

+	ComrelNavigatorGroup(String groupName, String icon, Object parent) {

+		super(parent);

+		myGroupName = groupName;

+		myIcon = icon;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getGroupName() {

+		return myGroupName;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getIcon() {

+		return myIcon;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object[] getChildren() {

+		return myChildren.toArray();

+	}

+

+	/**

+	 * @generated

+	 */

+	public void addChildren(Collection children) {

+		myChildren.addAll(children);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void addChild(Object child) {

+		myChildren.add(child);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isEmpty() {

+		return myChildren.size() == 0;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean equals(Object obj) {

+		if (obj instanceof comrel.diagram.navigator.ComrelNavigatorGroup) {

+			comrel.diagram.navigator.ComrelNavigatorGroup anotherGroup = (comrel.diagram.navigator.ComrelNavigatorGroup) obj;

+			if (getGroupName().equals(anotherGroup.getGroupName())) {

+				return getParent().equals(anotherGroup.getParent());

+			}

+		}

+		return super.equals(obj);

+	}

+

+	/**

+	 * @generated

+	 */

+	public int hashCode() {

+		return getGroupName().hashCode();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorItem.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorItem.java
new file mode 100644
index 0000000..02c74ff
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorItem.java
@@ -0,0 +1,93 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.core.runtime.IAdapterFactory;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.gmf.runtime.notation.View;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorItem extends ComrelAbstractNavigatorItem {

+

+	/**

+	 * @generated

+	 */

+	static {

+		final Class[] supportedTypes = new Class[] { View.class, EObject.class };

+		Platform.getAdapterManager().registerAdapters(new IAdapterFactory() {

+

+			public Object getAdapter(Object adaptableObject, Class adapterType) {

+				if (adaptableObject instanceof comrel.diagram.navigator.ComrelNavigatorItem

+						&& (adapterType == View.class || adapterType == EObject.class)) {

+					return ((comrel.diagram.navigator.ComrelNavigatorItem) adaptableObject)

+							.getView();

+				}

+				return null;

+			}

+

+			public Class[] getAdapterList() {

+				return supportedTypes;

+			}

+		}, comrel.diagram.navigator.ComrelNavigatorItem.class);

+	}

+

+	/**

+	 * @generated

+	 */

+	private View myView;

+

+	/**

+	 * @generated

+	 */

+	private boolean myLeaf = false;

+

+	/**

+	 * @generated

+	 */

+	public ComrelNavigatorItem(View view, Object parent, boolean isLeaf) {

+		super(parent);

+		myView = view;

+		myLeaf = isLeaf;

+	}

+

+	/**

+	 * @generated

+	 */

+	public View getView() {

+		return myView;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isLeaf() {

+		return myLeaf;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean equals(Object obj) {

+		if (obj instanceof comrel.diagram.navigator.ComrelNavigatorItem) {

+			return EcoreUtil

+					.getURI(getView())

+					.equals(EcoreUtil

+							.getURI(((comrel.diagram.navigator.ComrelNavigatorItem) obj)

+									.getView()));

+		}

+		return super.equals(obj);

+	}

+

+	/**

+	 * @generated

+	 */

+	public int hashCode() {

+		return EcoreUtil.getURI(getView()).hashCode();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorLabelProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorLabelProvider.java
new file mode 100644
index 0000000..b9add99
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorLabelProvider.java
@@ -0,0 +1,2417 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.resource.ImageDescriptor;

+import org.eclipse.jface.resource.ImageRegistry;

+import org.eclipse.jface.viewers.ITreePathLabelProvider;

+import org.eclipse.jface.viewers.LabelProvider;

+import org.eclipse.jface.viewers.TreePath;

+import org.eclipse.jface.viewers.ViewerLabel;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.ui.IMemento;

+import org.eclipse.ui.navigator.ICommonContentExtensionSite;

+import org.eclipse.ui.navigator.ICommonLabelProvider;

+

+import comrel.CompositeRefactoring;

+import comrel.diagram.edit.parts.*;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.diagram.providers.ComrelParserProvider;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorLabelProvider extends LabelProvider implements

+		ICommonLabelProvider, ITreePathLabelProvider {

+

+	/**

+	 * @generated

+	 */

+	static {

+		ComrelDiagramEditorPlugin

+				.getInstance()

+				.getImageRegistry()

+				.put("Navigator?UnknownElement", ImageDescriptor.getMissingImageDescriptor()); //$NON-NLS-1$

+		ComrelDiagramEditorPlugin

+				.getInstance()

+				.getImageRegistry()

+				.put("Navigator?ImageNotFound", ImageDescriptor.getMissingImageDescriptor()); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	public void updateLabel(ViewerLabel label, TreePath elementPath) {

+		Object element = elementPath.getLastSegment();

+		if (element instanceof ComrelNavigatorItem

+				&& !isOwnView(((ComrelNavigatorItem) element).getView())) {

+			return;

+		}

+		label.setText(getText(element));

+		label.setImage(getImage(element));

+	}

+

+	/**

+	 * @generated

+	 */

+	public Image getImage(Object element) {

+		if (element instanceof ComrelNavigatorGroup) {

+			ComrelNavigatorGroup group = (ComrelNavigatorGroup) element;

+			return ComrelDiagramEditorPlugin.getInstance().getBundledImage(

+					group.getIcon());

+		}

+

+		if (element instanceof ComrelNavigatorItem) {

+			ComrelNavigatorItem navigatorItem = (ComrelNavigatorItem) element;

+			if (!isOwnView(navigatorItem.getView())) {

+				return super.getImage(element);

+			}

+			return getImage(navigatorItem.getView());

+		}

+

+		// Due to plugin.xml content will be called only for "own" views

+		if (element instanceof IAdaptable) {

+			View view = (View) ((IAdaptable) element).getAdapter(View.class);

+			if (view != null && isOwnView(view)) {

+				return getImage(view);

+			}

+		}

+

+		return super.getImage(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public Image getImage(View view) {

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Diagram?http://comrel/0.1?CompositeRefactoring", ComrelElementTypes.CompositeRefactoring_1000); //$NON-NLS-1$

+		case ConditionCheckEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionCheck", ComrelElementTypes.ConditionCheck_3076); //$NON-NLS-1$

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3009); //$NON-NLS-1$

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_3033); //$NON-NLS-1$

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_2002); //$NON-NLS-1$

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_3025); //$NON-NLS-1$

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_3068); //$NON-NLS-1$

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_3048); //$NON-NLS-1$

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_3059); //$NON-NLS-1$

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFilterUnit", ComrelElementTypes.MultiFilterUnit_3053); //$NON-NLS-1$

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Link?http://comrel/0.1?SinglePortMapping", ComrelElementTypes.SinglePortMapping_4001); //$NON-NLS-1$

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_3073); //$NON-NLS-1$

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_3072); //$NON-NLS-1$

+		case AtomicUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_2007); //$NON-NLS-1$

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFeatureUnit", ComrelElementTypes.MultiFeatureUnit_3062); //$NON-NLS-1$

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_3046); //$NON-NLS-1$

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFeatureUnit", ComrelElementTypes.SingleFeatureUnit_3008); //$NON-NLS-1$

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_3077); //$NON-NLS-1$

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFeatureUnit", ComrelElementTypes.MultiFeatureUnit_3039); //$NON-NLS-1$

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_3029); //$NON-NLS-1$

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_3030); //$NON-NLS-1$

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFeatureUnit", ComrelElementTypes.SingleFeatureUnit_3055); //$NON-NLS-1$

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_3069); //$NON-NLS-1$

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_3034); //$NON-NLS-1$

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFeatureUnit", ComrelElementTypes.MultiFeatureUnit_3012); //$NON-NLS-1$

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3031); //$NON-NLS-1$

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3013); //$NON-NLS-1$

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFilterUnit", ComrelElementTypes.MultiFilterUnit_3019); //$NON-NLS-1$

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_3007); //$NON-NLS-1$

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3014); //$NON-NLS-1$

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_3036); //$NON-NLS-1$

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFeatureUnit", ComrelElementTypes.SingleFeatureUnit_3038); //$NON-NLS-1$

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3032); //$NON-NLS-1$

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3024); //$NON-NLS-1$

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_3066); //$NON-NLS-1$

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_3060); //$NON-NLS-1$

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3001); //$NON-NLS-1$

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3035); //$NON-NLS-1$

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3010); //$NON-NLS-1$

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_2006); //$NON-NLS-1$

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFilterUnit", ComrelElementTypes.SingleFilterUnit_3016); //$NON-NLS-1$

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleOutputPort", ComrelElementTypes.SingleOutputPort_3011); //$NON-NLS-1$

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFilterUnit", ComrelElementTypes.MultiFilterUnit_3058); //$NON-NLS-1$

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFeatureUnit", ComrelElementTypes.SingleFeatureUnit_3061); //$NON-NLS-1$

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFilterUnit", ComrelElementTypes.MultiFilterUnit_3064); //$NON-NLS-1$

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFeatureUnit", ComrelElementTypes.SingleFeatureUnit_3050); //$NON-NLS-1$

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_3054); //$NON-NLS-1$

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_3044); //$NON-NLS-1$

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_3065); //$NON-NLS-1$

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_3042); //$NON-NLS-1$

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFilterUnit", ComrelElementTypes.SingleFilterUnit_3063); //$NON-NLS-1$

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFilterUnit", ComrelElementTypes.SingleFilterUnit_3057); //$NON-NLS-1$

+		case SequentialUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_2005); //$NON-NLS-1$

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_3004); //$NON-NLS-1$

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3028); //$NON-NLS-1$

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_2004); //$NON-NLS-1$

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3017); //$NON-NLS-1$

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3005); //$NON-NLS-1$

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_3022); //$NON-NLS-1$

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_3047); //$NON-NLS-1$

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_3049); //$NON-NLS-1$

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_3043); //$NON-NLS-1$

+		case MultiInputPortEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3002); //$NON-NLS-1$

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_3070); //$NON-NLS-1$

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFeatureUnit", ComrelElementTypes.MultiFeatureUnit_3056); //$NON-NLS-1$

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFilterUnit", ComrelElementTypes.SingleFilterUnit_3040); //$NON-NLS-1$

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3023); //$NON-NLS-1$

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?CartesianQueuedUnit", ComrelElementTypes.CartesianQueuedUnit_3003); //$NON-NLS-1$

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_3045); //$NON-NLS-1$

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_3027); //$NON-NLS-1$

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3006); //$NON-NLS-1$

+		case SingleInputPortEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?SingleInputPort", ComrelElementTypes.SingleInputPort_2001); //$NON-NLS-1$

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFilterUnit", ComrelElementTypes.MultiFilterUnit_3041); //$NON-NLS-1$

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SequentialUnit", ComrelElementTypes.SequentialUnit_3026); //$NON-NLS-1$

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_3075); //$NON-NLS-1$

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleFilterUnit", ComrelElementTypes.SingleFilterUnit_3052); //$NON-NLS-1$

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiFeatureUnit", ComrelElementTypes.MultiFeatureUnit_3051); //$NON-NLS-1$

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?TopLevelNode?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_2003); //$NON-NLS-1$

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiOutputPort", ComrelElementTypes.MultiOutputPort_3015); //$NON-NLS-1$

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_3074); //$NON-NLS-1$

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ParallelQueuedUnit", ComrelElementTypes.ParallelQueuedUnit_3037); //$NON-NLS-1$

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Link?http://comrel/0.1?MultiPortMapping", ComrelElementTypes.MultiPortMapping_4002); //$NON-NLS-1$

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiInputPort", ComrelElementTypes.MultiInputPort_3020); //$NON-NLS-1$

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Link?http://comrel/0.1?MultiSinglePortMapping", ComrelElementTypes.MultiSinglePortMapping_4003); //$NON-NLS-1$

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleQueuedUnit", ComrelElementTypes.SingleQueuedUnit_3067); //$NON-NLS-1$

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?SingleOutputPort", ComrelElementTypes.SingleOutputPort_3018); //$NON-NLS-1$

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?ConditionalUnit", ComrelElementTypes.ConditionalUnit_3071); //$NON-NLS-1$

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?MultiOutputPort", ComrelElementTypes.MultiOutputPort_3021); //$NON-NLS-1$

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return getImage(

+					"Navigator?Node?http://comrel/0.1?AtomicUnit", ComrelElementTypes.AtomicUnit_3078); //$NON-NLS-1$

+		}

+		return getImage("Navigator?UnknownElement", null); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	private Image getImage(String key, IElementType elementType) {

+		ImageRegistry imageRegistry = ComrelDiagramEditorPlugin.getInstance()

+				.getImageRegistry();

+		Image image = imageRegistry.get(key);

+		if (image == null && elementType != null

+				&& ComrelElementTypes.isKnownElementType(elementType)) {

+			image = ComrelElementTypes.getImage(elementType);

+			imageRegistry.put(key, image);

+		}

+

+		if (image == null) {

+			image = imageRegistry.get("Navigator?ImageNotFound"); //$NON-NLS-1$

+			imageRegistry.put(key, image);

+		}

+		return image;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getText(Object element) {

+		if (element instanceof ComrelNavigatorGroup) {

+			ComrelNavigatorGroup group = (ComrelNavigatorGroup) element;

+			return group.getGroupName();

+		}

+

+		if (element instanceof ComrelNavigatorItem) {

+			ComrelNavigatorItem navigatorItem = (ComrelNavigatorItem) element;

+			if (!isOwnView(navigatorItem.getView())) {

+				return null;

+			}

+			return getText(navigatorItem.getView());

+		}

+

+		// Due to plugin.xml content will be called only for "own" views

+		if (element instanceof IAdaptable) {

+			View view = (View) ((IAdaptable) element).getAdapter(View.class);

+			if (view != null && isOwnView(view)) {

+				return getText(view);

+			}

+		}

+

+		return super.getText(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getText(View view) {

+		if (view.getElement() != null && view.getElement().eIsProxy()) {

+			return getUnresolvedDomainElementProxyText(view);

+		}

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			return getCompositeRefactoring_1000Text(view);

+		case ConditionCheckEditPart.VISUAL_ID:

+			return getConditionCheck_3076Text(view);

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return getSingleInputPort_3009Text(view);

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3033Text(view);

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_2002Text(view);

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3025Text(view);

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return getAtomicUnit_3068Text(view);

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3048Text(view);

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3059Text(view);

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3053Text(view);

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getSinglePortMapping_4001Text(view);

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return getSequentialUnit_3073Text(view);

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return getConditionalUnit_3072Text(view);

+		case AtomicUnitEditPart.VISUAL_ID:

+			return getAtomicUnit_2007Text(view);

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3062Text(view);

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return getConditionalUnit_3046Text(view);

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3008Text(view);

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return getAtomicUnit_3077Text(view);

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3039Text(view);

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3029Text(view);

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return getConditionalUnit_3030Text(view);

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3055Text(view);

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return getSequentialUnit_3069Text(view);

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return getAtomicUnit_3034Text(view);

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3012Text(view);

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return getSingleInputPort_3031Text(view);

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return getSingleInputPort_3013Text(view);

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return getMultiFilterUnit_3019Text(view);

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3007Text(view);

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return getMultiInputPort_3014Text(view);

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3036Text(view);

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3038Text(view);

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return getMultiInputPort_3032Text(view);

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return getMultiInputPort_3024Text(view);

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return getConditionalUnit_3066Text(view);

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return getSequentialUnit_3060Text(view);

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return getSingleInputPort_3001Text(view);

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return getSingleInputPort_3035Text(view);

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return getMultiInputPort_3010Text(view);

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return getConditionalUnit_2006Text(view);

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return getSingleFilterUnit_3016Text(view);

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return getSingleOutputPort_3011Text(view);

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3058Text(view);

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3061Text(view);

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3064Text(view);

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3050Text(view);

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3054Text(view);

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return getSequentialUnit_3044Text(view);

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3065Text(view);

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3042Text(view);

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3063Text(view);

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3057Text(view);

+		case SequentialUnitEditPart.VISUAL_ID:

+			return getSequentialUnit_2005Text(view);

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3004Text(view);

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return getMultiInputPort_3028Text(view);

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return getSingleQueuedUnit_2004Text(view);

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return getMultiInputPort_3017Text(view);

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return getSingleInputPort_3005Text(view);

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3022Text(view);

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3047Text(view);

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return getAtomicUnit_3049Text(view);

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3043Text(view);

+		case MultiInputPortEditPart.VISUAL_ID:

+			return getMultiInputPort_3002Text(view);

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return getSequentialUnit_3070Text(view);

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3056Text(view);

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3040Text(view);

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return getSingleInputPort_3023Text(view);

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3003Text(view);

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3045Text(view);

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return getSingleInputPort_3027Text(view);

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return getMultiInputPort_3006Text(view);

+		case SingleInputPortEditPart.VISUAL_ID:

+			return getSingleInputPort_2001Text(view);

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3041Text(view);

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return getSequentialUnit_3026Text(view);

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return getConditionalUnit_3075Text(view);

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3052Text(view);

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3051Text(view);

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return getParallelQueuedUnit_2003Text(view);

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return getMultiOutputPort_3015Text(view);

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return getAtomicUnit_3074Text(view);

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3037Text(view);

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getMultiPortMapping_4002Text(view);

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return getMultiInputPort_3020Text(view);

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getMultiSinglePortMapping_4003Text(view);

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3067Text(view);

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return getSingleOutputPort_3018Text(view);

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return getConditionalUnit_3071Text(view);

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return getMultiOutputPort_3021Text(view);

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return getAtomicUnit_3078Text(view);

+		}

+		return getUnknownElementText(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3017Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3017,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5014); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_3075Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_3075,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5055); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_3059Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_3059,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5063); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_3060Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_3060,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5062); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_3074Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_3074,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5050); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionCheck_3076Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionCheck_3076,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionCheckNameTypeSpecEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5052); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFilterUnit_3052Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFilterUnit_3052,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5038); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_3066Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_3066,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5060); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3035Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3035,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType9EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5026); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFilterUnit_3016Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFilterUnit_3016,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5016); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFilterUnit_3058Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFilterUnit_3058,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5043); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3032Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3032,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType9EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5025); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_3067Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_3067,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5049); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_3073Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_3073,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5051); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_3034Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_3034,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5027); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFeatureUnit_3056Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFeatureUnit_3056,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5041); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFilterUnit_3041Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFilterUnit_3041,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5032); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_3046Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_3046,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5065); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_3037Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_3037,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5070); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3013Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3013,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5010); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_3022Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_3022,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5076); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3024Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3024,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5021); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiPortMapping_4002Text(View view) {

+		return ""; //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFilterUnit_3053Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFilterUnit_3053,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5039); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_3077Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_3077,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5053); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_3068Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_3068,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5048); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3020Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3020,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5017); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFilterUnit_3064Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFilterUnit_3064,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5047); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleOutputPort_3018Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleOutputPort_3018,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleOutputPortNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5015); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSinglePortMapping_4001Text(View view) {

+		return ""; //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3010Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3010,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5007); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_2005Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_2005,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5083); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_3026Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_3026,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5074); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFeatureUnit_3055Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFeatureUnit_3055,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5040); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFeatureUnit_3050Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFeatureUnit_3050,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5036); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_3030Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_3030,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5072); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_3045Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_3045,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5066); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_3043Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_3043,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5068); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_3071Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_3071,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5057); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3023Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3023,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5020); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiOutputPort_3015Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiOutputPort_3015,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiOutputPortNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5012); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFeatureUnit_3062Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFeatureUnit_3062,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5045); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_2002Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_2002,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5080); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFeatureUnit_3039Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFeatureUnit_3039,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5030); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleOutputPort_3011Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleOutputPort_3011,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleOutputPortNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5008); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_3025Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_3025,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5075); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFeatureUnit_3038Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFeatureUnit_3038,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5029); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFilterUnit_3063Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFilterUnit_3063,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5046); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFilterUnit_3019Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFilterUnit_3019,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5019); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFeatureUnit_3008Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFeatureUnit_3008,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5009); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_3029Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_3029,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5073); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_3072Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_3072,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5056); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3005Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3005,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5004); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_3078Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_3078,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5054); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_3054Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_3054,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5064); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3002Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3002,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5003); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_3042Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_3042,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5069); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_3036Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_3036,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5071); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_3044Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_3044,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5067); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getConditionalUnit_2006Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.ConditionalUnit_2006,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5084); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3006Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3006,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5005); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3031Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3031,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType8EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5024); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiOutputPort_3021Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiOutputPort_3021,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiOutputPortNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5018); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_3069Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_3069,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5059); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_3033Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_3033,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5028); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_2001Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_2001,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5001); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3009Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3009,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5006); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_3048Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_3048,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5035); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_3003Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_3003,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5079); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_3065Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_3065,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5061); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFeatureUnit_3061Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFeatureUnit_3061,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType5EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5044); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_3007Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_3007,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5077); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCartesianQueuedUnit_3047Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.CartesianQueuedUnit_3047,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5033); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFilterUnit_3040Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFilterUnit_3040,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5031); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_3004Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_3004,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5078); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getCompositeRefactoring_1000Text(View view) {

+		CompositeRefactoring domainModelElement = (CompositeRefactoring) view

+				.getElement();

+		if (domainModelElement != null) {

+			return domainModelElement.getName();

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"No domain element for view with visualID = " + 1000); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFeatureUnit_3012Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFeatureUnit_3012,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5013); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3027Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3027,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType7EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5022); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleInputPort_3001Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleInputPort_3001,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType2EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5002); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSequentialUnit_3070Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SequentialUnit_3070,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5058); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_2007Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_2007,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelTypeEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5085); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleQueuedUnit_2004Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.SingleQueuedUnit_2004,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5082); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3028Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3028,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType8EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5023); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiSinglePortMapping_4003Text(View view) {

+		return ""; //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getAtomicUnit_3049Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.AtomicUnit_3049,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5034); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getParallelQueuedUnit_2003Text(View view) {

+		IParser parser = ComrelParserProvider

+				.getParser(

+						ComrelElementTypes.ParallelQueuedUnit_2003,

+						view.getElement() != null ? view.getElement() : view,

+						ComrelVisualIDRegistry

+								.getType(ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5081); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiFeatureUnit_3051Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiFeatureUnit_3051,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType3EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5037); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getMultiInputPort_3014Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.MultiInputPort_3014,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5011); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getSingleFilterUnit_3057Text(View view) {

+		IParser parser = ComrelParserProvider.getParser(

+				ComrelElementTypes.SingleFilterUnit_3057,

+				view.getElement() != null ? view.getElement() : view,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType4EditPart.VISUAL_ID));

+		if (parser != null) {

+			return parser.getPrintString(new EObjectAdapter(

+					view.getElement() != null ? view.getElement() : view),

+					ParserOptions.NONE.intValue());

+		} else {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Parser was not found for label " + 5042); //$NON-NLS-1$

+			return ""; //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getUnknownElementText(View view) {

+		return "<UnknownElement Visual_ID = " + view.getType() + ">"; //$NON-NLS-1$  //$NON-NLS-2$

+	}

+

+	/**

+	 * @generated

+	 */

+	private String getUnresolvedDomainElementProxyText(View view) {

+		return "<Unresolved domain element Visual_ID = " + view.getType() + ">"; //$NON-NLS-1$  //$NON-NLS-2$

+	}

+

+	/**

+	 * @generated

+	 */

+	public void init(ICommonContentExtensionSite aConfig) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void restoreState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void saveState(IMemento aMemento) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getDescription(Object anElement) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isOwnView(View view) {

+		return CompositeRefactoringEditPart.MODEL_ID

+				.equals(ComrelVisualIDRegistry.getModelID(view));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorLinkHelper.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorLinkHelper.java
new file mode 100644
index 0000000..a142c10
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorLinkHelper.java
@@ -0,0 +1,132 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.common.ui.URIEditorInput;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.GraphicalViewer;

+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.navigator.ILinkHelper;

+import org.eclipse.ui.part.FileEditorInput;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorLinkHelper implements ILinkHelper {

+

+	/**

+	 * @generated

+	 */

+	private static IEditorInput getEditorInput(Diagram diagram) {

+		Resource diagramResource = diagram.eResource();

+		for (EObject nextEObject : diagramResource.getContents()) {

+			if (nextEObject == diagram) {

+				return new FileEditorInput(

+						WorkspaceSynchronizer.getFile(diagramResource));

+			}

+			if (nextEObject instanceof Diagram) {

+				break;

+			}

+		}

+		URI uri = EcoreUtil.getURI(diagram);

+		String editorName = uri.lastSegment() + '#'

+				+ diagram.eResource().getContents().indexOf(diagram);

+		IEditorInput editorInput = new URIEditorInput(uri, editorName);

+		return editorInput;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IStructuredSelection findSelection(IEditorInput anInput) {

+		IDiagramDocument document = ComrelDiagramEditorPlugin.getInstance()

+				.getDocumentProvider().getDiagramDocument(anInput);

+		if (document == null) {

+			return StructuredSelection.EMPTY;

+		}

+		Diagram diagram = document.getDiagram();

+		IFile file = WorkspaceSynchronizer.getFile(diagram.eResource());

+		if (file != null) {

+			ComrelNavigatorItem item = new ComrelNavigatorItem(diagram, file,

+					false);

+			return new StructuredSelection(item);

+		}

+		return StructuredSelection.EMPTY;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void activateEditor(IWorkbenchPage aPage,

+			IStructuredSelection aSelection) {

+		if (aSelection == null || aSelection.isEmpty()) {

+			return;

+		}

+		if (false == aSelection.getFirstElement() instanceof ComrelAbstractNavigatorItem) {

+			return;

+		}

+

+		ComrelAbstractNavigatorItem abstractNavigatorItem = (ComrelAbstractNavigatorItem) aSelection

+				.getFirstElement();

+		View navigatorView = null;

+		if (abstractNavigatorItem instanceof ComrelNavigatorItem) {

+			navigatorView = ((ComrelNavigatorItem) abstractNavigatorItem)

+					.getView();

+		} else if (abstractNavigatorItem instanceof ComrelNavigatorGroup) {

+			ComrelNavigatorGroup navigatorGroup = (ComrelNavigatorGroup) abstractNavigatorItem;

+			if (navigatorGroup.getParent() instanceof ComrelNavigatorItem) {

+				navigatorView = ((ComrelNavigatorItem) navigatorGroup

+						.getParent()).getView();

+			} else if (navigatorGroup.getParent() instanceof IAdaptable) {

+				navigatorView = (View) ((IAdaptable) navigatorGroup.getParent())

+						.getAdapter(View.class);

+			}

+		}

+		if (navigatorView == null) {

+			return;

+		}

+		IEditorInput editorInput = getEditorInput(navigatorView.getDiagram());

+		IEditorPart editor = aPage.findEditor(editorInput);

+		if (editor == null) {

+			return;

+		}

+		aPage.bringToTop(editor);

+		if (editor instanceof DiagramEditor) {

+			DiagramEditor diagramEditor = (DiagramEditor) editor;

+			ResourceSet diagramEditorResourceSet = diagramEditor

+					.getEditingDomain().getResourceSet();

+			EObject selectedView = diagramEditorResourceSet.getEObject(

+					EcoreUtil.getURI(navigatorView), true);

+			if (selectedView == null) {

+				return;

+			}

+			GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor

+					.getAdapter(GraphicalViewer.class);

+			EditPart selectedEditPart = (EditPart) graphicalViewer

+					.getEditPartRegistry().get(selectedView);

+			if (selectedEditPart != null) {

+				graphicalViewer.select(selectedEditPart);

+			}

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorSorter.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorSorter.java
new file mode 100644
index 0000000..beecb3d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/navigator/ComrelNavigatorSorter.java
@@ -0,0 +1,39 @@
+/*

+ * 

+ */

+package comrel.diagram.navigator;

+

+import org.eclipse.jface.viewers.ViewerSorter;

+

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelNavigatorSorter extends ViewerSorter {

+

+	/**

+	 * @generated

+	 */

+	private static final int GROUP_CATEGORY = 7086;

+

+	/**

+	 * @generated

+	 */

+	private static final int SHORTCUTS_CATEGORY = 7085;

+

+	/**

+	 * @generated

+	 */

+	public int category(Object element) {

+		if (element instanceof ComrelNavigatorItem) {

+			ComrelNavigatorItem item = (ComrelNavigatorItem) element;

+			if (item.getView().getEAnnotation("Shortcut") != null) { //$NON-NLS-1$

+				return SHORTCUTS_CATEGORY;

+			}

+			return ComrelVisualIDRegistry.getVisualID(item.getView());

+		}

+		return GROUP_CATEGORY;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/parsers/AbstractParser.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/parsers/AbstractParser.java
new file mode 100644
index 0000000..4c4b653
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/parsers/AbstractParser.java
@@ -0,0 +1,468 @@
+/*

+ * 

+ */

+package comrel.diagram.parsers;

+

+import java.util.Arrays;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EAttribute;

+import org.eclipse.emf.ecore.EClassifier;

+import org.eclipse.emf.ecore.EDataType;

+import org.eclipse.emf.ecore.EEnum;

+import org.eclipse.emf.ecore.EEnumLiteral;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;

+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;

+import org.eclipse.jface.text.contentassist.IContentAssistProcessor;

+import org.eclipse.osgi.util.NLS;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public abstract class AbstractParser implements IParser {

+

+	/**

+	 * @generated

+	 */

+	protected final EAttribute[] features;

+

+	/**

+	 * @generated

+	 */

+	protected final EAttribute[] editableFeatures;

+

+	/**

+	 * @generated

+	 */

+	private String viewPattern;

+

+	/**

+	 * @generated

+	 */

+	private String editorPattern;

+

+	/**

+	 * @generated

+	 */

+	private String editPattern;

+

+	/**

+	 * @generated

+	 */

+	public AbstractParser(EAttribute[] features) {

+		if (features == null || Arrays.asList(features).contains(null)) {

+			throw new IllegalArgumentException();

+		}

+		this.editableFeatures = this.features = features;

+	}

+

+	/**

+	 * @generated

+	 */

+	public AbstractParser(EAttribute[] features, EAttribute[] editableFeatures) {

+		if (features == null || Arrays.asList(features).contains(null)) {

+			throw new IllegalArgumentException();

+		}

+		this.features = features;

+		if (editableFeatures == null

+				|| Arrays.asList(editableFeatures).contains(null)) {

+			throw new IllegalArgumentException();

+		}

+		this.editableFeatures = editableFeatures;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getViewPattern() {

+		return viewPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setViewPattern(String viewPattern) {

+		this.viewPattern = viewPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditorPattern() {

+		return editorPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setEditorPattern(String editorPattern) {

+		this.editorPattern = editorPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditPattern() {

+		return editPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setEditPattern(String editPattern) {

+		this.editPattern = editPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isAffectingEvent(Object event, int flags) {

+		if (event instanceof Notification) {

+			return isAffectingFeature(((Notification) event).getFeature());

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isAffectingFeature(Object feature) {

+		for (int i = 0; i < features.length; i++) {

+			if (features[i] == feature) {

+				return true;

+			}

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IContentAssistProcessor getCompletionProcessor(IAdaptable element) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Object[] getValues(EObject element) {

+		Object[] values = new Object[features.length];

+		for (int i = 0; i < features.length; i++) {

+			values[i] = getValue(element, features[i]);

+		}

+		return values;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Object[] getEditableValues(EObject element) {

+		Object[] values = new Object[editableFeatures.length];

+		for (int i = 0; i < editableFeatures.length; i++) {

+			values[i] = getValue(element, editableFeatures[i]);

+		}

+		return values;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Object getValue(EObject element, EAttribute feature) {

+		Object value = element.eGet(feature);

+		Class iClass = feature.getEAttributeType().getInstanceClass();

+		if (String.class.equals(iClass)) {

+			if (value == null) {

+				value = ""; //$NON-NLS-1$

+			}

+		}

+		return value;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ICommand getParseCommand(IAdaptable adapter, Object[] values,

+			int flags) {

+		if (values == null

+				|| validateNewValues(values).getCode() != IParserEditStatus.EDITABLE) {

+			return UnexecutableCommand.INSTANCE;

+		}

+		EObject element = (EObject) adapter.getAdapter(EObject.class);

+		TransactionalEditingDomain editingDomain = TransactionUtil

+				.getEditingDomain(element);

+		if (editingDomain == null) {

+			return UnexecutableCommand.INSTANCE;

+		}

+		CompositeTransactionalCommand command = new CompositeTransactionalCommand(

+				editingDomain, "Set Values"); //$NON-NLS-1$

+		for (int i = 0; i < values.length; i++) {

+			command.compose(getModificationCommand(element,

+					editableFeatures[i], values[i]));

+		}

+		return command;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ICommand getModificationCommand(EObject element,

+			EAttribute feature, Object value) {

+		value = getValidNewValue(feature, value);

+		if (value instanceof InvalidValue) {

+			return UnexecutableCommand.INSTANCE;

+		}

+		SetRequest request = new SetRequest(element, feature, value);

+		return new SetValueCommand(request);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IParserEditStatus validateNewValues(Object[] values) {

+		if (values.length != editableFeatures.length) {

+			return ParserEditStatus.UNEDITABLE_STATUS;

+		}

+		for (int i = 0; i < values.length; i++) {

+			Object value = getValidNewValue(editableFeatures[i], values[i]);

+			if (value instanceof InvalidValue) {

+				return new ParserEditStatus(ComrelDiagramEditorPlugin.ID,

+						IParserEditStatus.UNEDITABLE, value.toString());

+			}

+		}

+		return ParserEditStatus.EDITABLE_STATUS;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Object getValidNewValue(EAttribute feature, Object value) {

+		EClassifier type = feature.getEType();

+		if (type instanceof EDataType) {

+			Class iClass = type.getInstanceClass();

+			if (Boolean.TYPE.equals(iClass)) {

+				if (value instanceof Boolean) {

+					// ok

+				} else if (value instanceof String) {

+					value = Boolean.valueOf((String) value);

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Character.TYPE.equals(iClass)) {

+				if (value instanceof Character) {

+					// ok

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						value = new Character(s.charAt(0));

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Byte.TYPE.equals(iClass)) {

+				if (value instanceof Byte) {

+					// ok

+				} else if (value instanceof Number) {

+					value = new Byte(((Number) value).byteValue());

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						try {

+							value = Byte.valueOf(s);

+						} catch (NumberFormatException nfe) {

+							value = new InvalidValue(

+									NLS.bind(

+											Messages.AbstractParser_WrongStringConversion,

+											iClass.getName()));

+						}

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Short.TYPE.equals(iClass)) {

+				if (value instanceof Short) {

+					// ok

+				} else if (value instanceof Number) {

+					value = new Short(((Number) value).shortValue());

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						try {

+							value = Short.valueOf(s);

+						} catch (NumberFormatException nfe) {

+							value = new InvalidValue(

+									NLS.bind(

+											Messages.AbstractParser_WrongStringConversion,

+											iClass.getName()));

+						}

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Integer.TYPE.equals(iClass)) {

+				if (value instanceof Integer) {

+					// ok

+				} else if (value instanceof Number) {

+					value = new Integer(((Number) value).intValue());

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						try {

+							value = Integer.valueOf(s);

+						} catch (NumberFormatException nfe) {

+							value = new InvalidValue(

+									NLS.bind(

+											Messages.AbstractParser_WrongStringConversion,

+											iClass.getName()));

+						}

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Long.TYPE.equals(iClass)) {

+				if (value instanceof Long) {

+					// ok

+				} else if (value instanceof Number) {

+					value = new Long(((Number) value).longValue());

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						try {

+							value = Long.valueOf(s);

+						} catch (NumberFormatException nfe) {

+							value = new InvalidValue(

+									NLS.bind(

+											Messages.AbstractParser_WrongStringConversion,

+											iClass.getName()));

+						}

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Float.TYPE.equals(iClass)) {

+				if (value instanceof Float) {

+					// ok

+				} else if (value instanceof Number) {

+					value = new Float(((Number) value).floatValue());

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						try {

+							value = Float.valueOf(s);

+						} catch (NumberFormatException nfe) {

+							value = new InvalidValue(

+									NLS.bind(

+											Messages.AbstractParser_WrongStringConversion,

+											iClass.getName()));

+						}

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (Double.TYPE.equals(iClass)) {

+				if (value instanceof Double) {

+					// ok

+				} else if (value instanceof Number) {

+					value = new Double(((Number) value).doubleValue());

+				} else if (value instanceof String) {

+					String s = (String) value;

+					if (s.length() == 0) {

+						value = null;

+					} else {

+						try {

+							value = Double.valueOf(s);

+						} catch (NumberFormatException nfe) {

+							value = new InvalidValue(

+									NLS.bind(

+											Messages.AbstractParser_WrongStringConversion,

+											iClass.getName()));

+						}

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							iClass.getName()));

+				}

+			} else if (type instanceof EEnum) {

+				if (value instanceof String) {

+					EEnumLiteral literal = ((EEnum) type)

+							.getEEnumLiteralByLiteral((String) value);

+					if (literal == null) {

+						value = new InvalidValue(NLS.bind(

+								Messages.AbstractParser_UnknownLiteral, value));

+					} else {

+						value = literal.getInstance();

+					}

+				} else {

+					value = new InvalidValue(NLS.bind(

+							Messages.AbstractParser_UnexpectedValueType,

+							String.class.getName()));

+				}

+			}

+		}

+		return value;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected class InvalidValue {

+

+		/**

+		 * @generated

+		 */

+		private String description;

+

+		/**

+		 * @generated

+		 */

+		public InvalidValue(String description) {

+			this.description = description;

+		}

+

+		/**

+		 * @generated

+		 */

+		public String toString() {

+			return description;

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/parsers/MessageFormatParser.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/parsers/MessageFormatParser.java
new file mode 100644
index 0000000..a45f7ed
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/parsers/MessageFormatParser.java
@@ -0,0 +1,208 @@
+/*

+ * 

+ */

+package comrel.diagram.parsers;

+

+import java.text.FieldPosition;

+import java.text.MessageFormat;

+import java.text.ParsePosition;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EAttribute;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;

+import org.eclipse.osgi.util.NLS;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class MessageFormatParser extends AbstractParser {

+

+	/**

+	 * @generated

+	 */

+	private String defaultPattern;

+

+	/**

+	 * @generated

+	 */

+	private String defaultEditablePattern;

+

+	/**

+	 * @generated

+	 */

+	private MessageFormat viewProcessor;

+

+	/**

+	 * @generated

+	 */

+	private MessageFormat editorProcessor;

+

+	/**

+	 * @generated

+	 */

+	private MessageFormat editProcessor;

+

+	/**

+	 * @generated

+	 */

+	public MessageFormatParser(EAttribute[] features) {

+		super(features);

+	}

+

+	/**

+	 * @generated

+	 */

+	public MessageFormatParser(EAttribute[] features,

+			EAttribute[] editableFeatures) {

+		super(features, editableFeatures);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getDefaultPattern() {

+		if (defaultPattern == null) {

+			StringBuffer sb = new StringBuffer();

+			for (int i = 0; i < features.length; i++) {

+				if (i > 0) {

+					sb.append(' ');

+				}

+				sb.append('{');

+				sb.append(i);

+				sb.append('}');

+			}

+			defaultPattern = sb.toString();

+		}

+		return defaultPattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setViewPattern(String viewPattern) {

+		super.setViewPattern(viewPattern);

+		viewProcessor = null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setEditorPattern(String editorPattern) {

+		super.setEditorPattern(editorPattern);

+		editorProcessor = null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MessageFormat getViewProcessor() {

+		if (viewProcessor == null) {

+			viewProcessor = new MessageFormat(

+					getViewPattern() == null ? getDefaultPattern()

+							: getViewPattern());

+		}

+		return viewProcessor;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MessageFormat getEditorProcessor() {

+		if (editorProcessor == null) {

+			editorProcessor = new MessageFormat(

+					getEditorPattern() == null ? getDefaultEditablePattern()

+							: getEditorPattern());

+		}

+		return editorProcessor;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getDefaultEditablePattern() {

+		if (defaultEditablePattern == null) {

+			StringBuffer sb = new StringBuffer();

+			for (int i = 0; i < editableFeatures.length; i++) {

+				if (i > 0) {

+					sb.append(' ');

+				}

+				sb.append('{');

+				sb.append(i);

+				sb.append('}');

+			}

+			defaultEditablePattern = sb.toString();

+		}

+		return defaultEditablePattern;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setEditPattern(String editPattern) {

+		super.setEditPattern(editPattern);

+		editProcessor = null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected MessageFormat getEditProcessor() {

+		if (editProcessor == null) {

+			editProcessor = new MessageFormat(

+					getEditPattern() == null ? getDefaultEditablePattern()

+							: getEditPattern());

+		}

+		return editProcessor;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getEditString(IAdaptable adapter, int flags) {

+		EObject element = (EObject) adapter.getAdapter(EObject.class);

+		return getEditorProcessor().format(getEditableValues(element),

+				new StringBuffer(), new FieldPosition(0)).toString();

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParserEditStatus isValidEditString(IAdaptable adapter,

+			String editString) {

+		ParsePosition pos = new ParsePosition(0);

+		Object[] values = getEditProcessor().parse(editString, pos);

+		if (values == null) {

+			return new ParserEditStatus(ComrelDiagramEditorPlugin.ID,

+					IParserEditStatus.UNEDITABLE, NLS.bind(

+							Messages.MessageFormatParser_InvalidInputError,

+							new Integer(pos.getErrorIndex())));

+		}

+		return validateNewValues(values);

+	}

+

+	/**

+	 * @generated

+	 */

+	public ICommand getParseCommand(IAdaptable adapter, String newString,

+			int flags) {

+		Object[] values = getEditProcessor().parse(newString,

+				new ParsePosition(0));

+		return getParseCommand(adapter, values, flags);

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getPrintString(IAdaptable adapter, int flags) {

+		EObject element = (EObject) adapter.getAdapter(EObject.class);

+		return getViewProcessor().format(getValues(element),

+				new StringBuffer(), new FieldPosition(0)).toString();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCreationWizard.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCreationWizard.java
new file mode 100644
index 0000000..93db297
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCreationWizard.java
@@ -0,0 +1,185 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.lang.reflect.InvocationTargetException;

+

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.operation.IRunnableWithProgress;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+import org.eclipse.ui.PartInitException;

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+/**

+ * @generated

+ */

+public class ComrelCreationWizard extends Wizard implements INewWizard {

+

+	private ComrelCustomCreationWizardPage customPage;

+

+	/**

+	 * @generated

+	 */

+	private IWorkbench workbench;

+

+	/**

+	 * @generated

+	 */

+	protected IStructuredSelection selection;

+

+	/**

+	 * @generated

+	 */

+	protected ComrelCreationWizardPage diagramModelFilePage;

+

+	/**

+	 * @generated

+	 */

+	protected ComrelCreationWizardPage domainModelFilePage;

+

+	/**

+	 * @generated

+	 */

+	protected Resource diagram;

+

+	/**

+	 * @generated

+	 */

+	private boolean openNewlyCreatedDiagramEditor = true;

+

+	/**

+	 * @generated

+	 */

+	public IWorkbench getWorkbench() {

+		return workbench;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IStructuredSelection getSelection() {

+		return selection;

+	}

+

+	/**

+	 * @generated

+	 */

+	public final Resource getDiagram() {

+		return diagram;

+	}

+

+	/**

+	 * @generated

+	 */

+	public final boolean isOpenNewlyCreatedDiagramEditor() {

+		return openNewlyCreatedDiagramEditor;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setOpenNewlyCreatedDiagramEditor(

+			boolean openNewlyCreatedDiagramEditor) {

+		this.openNewlyCreatedDiagramEditor = openNewlyCreatedDiagramEditor;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void init(IWorkbench workbench, IStructuredSelection selection) {

+		this.workbench = workbench;

+		this.selection = selection;

+		setWindowTitle(Messages.ComrelCreationWizardTitle);

+		setDefaultPageImageDescriptor(ComrelDiagramEditorPlugin

+				.getBundledImageDescriptor("icons/wizban/NewComrelWizard.gif")); //$NON-NLS-1$

+		setNeedsProgressMonitor(true);

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public void addPages() {

+

+		diagramModelFilePage = new ComrelCreationWizardPage(

+				"DiagramModelFile", getSelection(), "comrel_diagram"); //$NON-NLS-1$ //$NON-NLS-2$

+		diagramModelFilePage

+				.setTitle(Messages.ComrelCreationWizard_DiagramModelFilePageTitle);

+		diagramModelFilePage

+				.setDescription(Messages.ComrelCreationWizard_DiagramModelFilePageDescription);

+		addPage(diagramModelFilePage);

+

+		domainModelFilePage = new ComrelCreationWizardPage(

+				"DomainModelFile", getSelection(), "comrel") { //$NON-NLS-1$ //$NON-NLS-2$

+

+			public void setVisible(boolean visible) {

+				if (visible) {

+					String fileName = diagramModelFilePage.getFileName();

+					fileName = fileName.substring(0, fileName.length()

+							- ".comrel_diagram".length()); //$NON-NLS-1$

+					setFileName(ComrelDiagramEditorUtil.getUniqueFileName(

+							getContainerFullPath(), fileName, "comrel")); //$NON-NLS-1$

+				}

+				super.setVisible(visible);

+			}

+		};

+		domainModelFilePage

+				.setTitle(Messages.ComrelCreationWizard_DomainModelFilePageTitle);

+		domainModelFilePage

+				.setDescription(Messages.ComrelCreationWizard_DomainModelFilePageDescription);

+		addPage(domainModelFilePage);

+		customPage = new ComrelCustomCreationWizardPage(

+				"Composite Refactoring Details");

+		customPage.setTitle("Composite Refactoring Details");

+		addPage(customPage);

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public boolean performFinish() {

+		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {

+

+			protected void execute(IProgressMonitor monitor)

+					throws CoreException, InterruptedException {

+				diagram = ComrelDiagramEditorUtil.createDiagram(

+						diagramModelFilePage.getURI(), domainModelFilePage

+								.getURI(), monitor, customPage.getDiagramName()

+								.getText(), customPage.getNamespaceURI()

+								.getText(), customPage

+								.getConnectionVisualization().getText());

+				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {

+					try {

+						ComrelDiagramEditorUtil.openDiagram(diagram);

+					} catch (PartInitException e) {

+						ErrorDialog.openError(getContainer().getShell(),

+								Messages.ComrelCreationWizardOpenEditorError,

+								null, e.getStatus());

+					}

+				}

+			}

+		};

+		try {

+			getContainer().run(false, true, op);

+		} catch (InterruptedException e) {

+			return false;

+		} catch (InvocationTargetException e) {

+			if (e.getTargetException() instanceof CoreException) {

+				ErrorDialog.openError(getContainer().getShell(),

+						Messages.ComrelCreationWizardCreationError, null,

+						((CoreException) e.getTargetException()).getStatus());

+			} else {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Error creating diagram", e.getTargetException()); //$NON-NLS-1$

+			}

+			return false;

+		}

+		return diagram != null;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCreationWizardPage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCreationWizardPage.java
new file mode 100644
index 0000000..e9713a4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCreationWizardPage.java
@@ -0,0 +1,90 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;

+

+/**

+ * @generated

+ */

+public class ComrelCreationWizardPage extends WizardNewFileCreationPage {

+

+	/**

+	 * @generated

+	 */

+	private final String fileExtension;

+

+	/**

+	 * @generated

+	 */

+	public ComrelCreationWizardPage(String pageName,

+			IStructuredSelection selection, String fileExtension) {

+		super(pageName, selection);

+		this.fileExtension = fileExtension;

+	}

+

+	/**

+	 * Override to create files with this extension.

+	 * 

+	 * @generated

+	 */

+	protected String getExtension() {

+		return fileExtension;

+	}

+

+	/**

+	 * @generated

+	 */

+	public URI getURI() {

+		return URI.createPlatformResourceURI(getFilePath().toString(), false);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IPath getFilePath() {

+		IPath path = getContainerFullPath();

+		if (path == null) {

+			path = new Path(""); //$NON-NLS-1$

+		}

+		String fileName = getFileName();

+		if (fileName != null) {

+			path = path.append(fileName);

+		}

+		return path;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void createControl(Composite parent) {

+		super.createControl(parent);

+		setFileName(ComrelDiagramEditorUtil.getUniqueFileName(

+				getContainerFullPath(), getFileName(), getExtension()));

+		setPageComplete(validatePage());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean validatePage() {

+		if (!super.validatePage()) {

+			return false;

+		}

+		String extension = getExtension();

+		if (extension != null

+				&& !getFilePath().toString().endsWith("." + extension)) {

+			setErrorMessage(NLS.bind(

+					Messages.ComrelCreationWizardPageExtensionError, extension));

+			return false;

+		}

+		return true;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCustomCreationWizardPage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCustomCreationWizardPage.java
new file mode 100644
index 0000000..bddd63b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelCustomCreationWizardPage.java
@@ -0,0 +1,128 @@
+package comrel.diagram.part;

+

+import org.eclipse.jface.wizard.IWizardPage;

+import org.eclipse.jface.wizard.WizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Combo;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Text;

+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;

+

+import comrel.MappingVisualization;

+import comrel.util.RegistryUtil;

+

+public class ComrelCustomCreationWizardPage extends WizardPage {

+

+	private Combo namespaceURI;

+	

+	private Text diagramName;

+	

+	private Combo connectionVisualization;

+	

+	protected ComrelCustomCreationWizardPage(String pageName) {

+		super(pageName);

+	}

+

+	@Override

+	public void createControl(Composite parent) {

+		Composite composite = new Composite(parent,SWT.NONE);

+		GridLayout gl = new GridLayout();

+	    int ncol = 3;

+	    gl.numColumns = ncol;

+	    GridData gridData = new GridData();

+	    new Label (composite, SWT.NONE).setText("Diagram Name:");		

+	    diagramName = new Text(composite, SWT.BORDER);

+	    gridData = new GridData(GridData.FILL_HORIZONTAL);

+	    gridData.horizontalSpan = ncol - 1;

+	    diagramName.setLayoutData(gridData);

+	    gridData.horizontalAlignment = GridData.BEGINNING;

+	    IWizardPage prePage = this.getPreviousPage();

+	    if(prePage instanceof WizardNewFileCreationPage) {

+	    	WizardNewFileCreationPage p = (WizardNewFileCreationPage)prePage;

+	    	String filename = p.getFileName();

+	    	String subString = filename.substring(0,filename.length()-18);

+	    	diagramName.setText(subString);

+	    }

+	    gridData.widthHint = GridData.HORIZONTAL_ALIGN_FILL;

+	    gridData.minimumWidth = GridData.HORIZONTAL_ALIGN_FILL;

+	    new Label (composite, SWT.NONE).setText("NamespaceURI:");						

+	    namespaceURI = new Combo(composite, SWT.BORDER | SWT.READ_ONLY);

+	   	for(String s: RegistryUtil.getNamepsaceURIS()) {

+	   		namespaceURI.add(s);

+	   	}

+	    namespaceURI.setLayoutData(gridData);

+	    namespaceURI.addListener(SWT.Selection, new MyListener());

+	    

+	    new Label (composite, SWT.NONE).setText("Connection Visualization:");

+	    connectionVisualization = new Combo(composite, SWT.BORDER | SWT.READ_ONLY);

+	    for(MappingVisualization m : MappingVisualization.values()) {

+	    	connectionVisualization.add(m.getLiteral());

+	    }

+	    if(connectionVisualization.getItemCount()>0) {

+	    	connectionVisualization.select(0);

+	    }

+	    connectionVisualization.setLayoutData(gridData);

+	    composite.setLayout(gl);

+	    setControl(composite);	    

+	}	

+

+	public Combo getNamespaceURI() {

+		return namespaceURI;

+	}

+

+	public void setNamespaceURI(Combo namespaceURI) {

+		this.namespaceURI = namespaceURI;

+		this.setPageComplete(this.isPageComplete());

+		getWizard().getContainer().updateButtons();

+	}

+

+	public Text getDiagramName() {

+		return diagramName;

+	}

+

+	public void setDiagramName(Text diagramName) {

+		this.diagramName = diagramName;

+	}

+

+	public Combo getConnectionVisualization() {

+		return connectionVisualization;

+	}

+

+	public void setConnectionVisualization(Combo connectionVisualization) {

+		this.connectionVisualization = connectionVisualization;

+	}	

+	

+	@Override

+	public boolean isPageComplete() {

+		return validatePage() && super.isPageComplete();

+	}

+

+	@Override

+	public void setPageComplete(boolean complete) {

+		super.setPageComplete(complete);

+	}

+	

+	public boolean validatePage(){

+		if(this.getNamespaceURI().getSelectionIndex()==-1) {

+			setErrorMessage("NamspaceURI must be set");

+			return false;

+		}

+		setErrorMessage(null);

+		return true;

+	}	

+

+	private class MyListener implements org.eclipse.swt.widgets.Listener{

+

+		@Override

+		public void handleEvent(Event event) {

+		    setPageComplete(validatePage());

+		    getWizard().getContainer().updateButtons();

+		    

+		}

+		

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramActionBarContributor.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramActionBarContributor.java
new file mode 100644
index 0000000..ff1fe40
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramActionBarContributor.java
@@ -0,0 +1,57 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramActionBarContributor;

+import org.eclipse.gmf.runtime.diagram.ui.printing.render.actions.EnhancedPrintActionHelper;

+import org.eclipse.gmf.runtime.diagram.ui.printing.render.actions.RenderedPrintPreviewAction;

+import org.eclipse.jface.action.GroupMarker;

+import org.eclipse.jface.action.IAction;

+import org.eclipse.jface.action.IMenuManager;

+import org.eclipse.ui.IActionBars;

+import org.eclipse.ui.IWorkbenchActionConstants;

+import org.eclipse.ui.IWorkbenchPage;

+

+/**

+ * @generated

+ */

+public class ComrelDiagramActionBarContributor extends

+		DiagramActionBarContributor {

+

+	/**

+	 * @generated

+	 */

+	protected Class getEditorClass() {

+		return ComrelDiagramEditor.class;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getEditorId() {

+		return ComrelDiagramEditor.ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void init(IActionBars bars, IWorkbenchPage page) {

+		super.init(bars, page);

+		// print preview

+		IMenuManager fileMenu = bars.getMenuManager().findMenuUsingPath(

+				IWorkbenchActionConstants.M_FILE);

+		assert fileMenu != null;

+		IAction printPreviewAction = new RenderedPrintPreviewAction(

+				new EnhancedPrintActionHelper());

+		fileMenu.insertBefore("print", printPreviewAction); //$NON-NLS-1$

+		IMenuManager editMenu = bars.getMenuManager().findMenuUsingPath(

+				IWorkbenchActionConstants.M_EDIT);

+		assert editMenu != null;

+		if (editMenu.find("validationGroup") == null) { //$NON-NLS-1$

+			editMenu.add(new GroupMarker("validationGroup")); //$NON-NLS-1$

+		}

+		IAction validateAction = new ValidateAction(page);

+		editMenu.appendToGroup("validationGroup", validateAction); //$NON-NLS-1$

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditor.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditor.java
new file mode 100644
index 0000000..1c57bcc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditor.java
@@ -0,0 +1,393 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.ArrayList;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.List;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IMarker;

+import org.eclipse.core.resources.IWorkspaceRoot;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.NullProgressMonitor;

+import org.eclipse.emf.common.ui.URIEditorInput;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gef.EditPartViewer;

+import org.eclipse.gef.palette.PaletteRoot;

+import org.eclipse.gmf.runtime.common.ui.services.marker.MarkerNavigationService;

+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;

+import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;

+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramDropTargetListener;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocumentProvider;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.dialogs.IMessageProvider;

+import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.jface.util.LocalSelectionTransfer;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.jface.window.Window;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.swt.dnd.Transfer;

+import org.eclipse.swt.dnd.TransferData;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IEditorMatchingStrategy;

+import org.eclipse.ui.IEditorReference;

+import org.eclipse.ui.IFileEditorInput;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.dialogs.SaveAsDialog;

+import org.eclipse.ui.ide.IGotoMarker;

+import org.eclipse.ui.navigator.resources.ProjectExplorer;

+import org.eclipse.ui.part.FileEditorInput;

+import org.eclipse.ui.part.IShowInTargetList;

+import org.eclipse.ui.part.ShowInContext;

+

+import comrel.diagram.navigator.ComrelNavigatorItem;

+

+/**

+ * @generated

+ */

+public class ComrelDiagramEditor extends DiagramDocumentEditor implements

+		IGotoMarker {

+

+	/**

+	 * @generated

+	 */

+	public static final String ID = "comrel.diagram.part.ComrelDiagramEditorID"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public static final String CONTEXT_ID = "comrel.diagram.ui.diagramContext"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public ComrelDiagramEditor() {

+		super(true);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getContextID() {

+		return CONTEXT_ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected PaletteRoot createPaletteRoot(PaletteRoot existingPaletteRoot) {

+		PaletteRoot root = super.createPaletteRoot(existingPaletteRoot);

+		new ComrelPaletteFactory().fillPalette(root);

+		return root;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected PreferencesHint getPreferencesHint() {

+		return ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT;

+	}

+

+	/**

+	 * @generated

+	 */

+	public String getContributorId() {

+		return ComrelDiagramEditorPlugin.ID;

+	}

+

+	/**

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	public Object getAdapter(Class type) {

+		if (type == IShowInTargetList.class) {

+			return new IShowInTargetList() {

+				public String[] getShowInTargetIds() {

+					return new String[] { ProjectExplorer.VIEW_ID };

+				}

+			};

+		}

+		return super.getAdapter(type);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IDocumentProvider getDocumentProvider(IEditorInput input) {

+		if (input instanceof IFileEditorInput

+				|| input instanceof URIEditorInput) {

+			return ComrelDiagramEditorPlugin.getInstance()

+					.getDocumentProvider();

+		}

+		return super.getDocumentProvider(input);

+	}

+

+	/**

+	 * @generated

+	 */

+	public TransactionalEditingDomain getEditingDomain() {

+		IDocument document = getEditorInput() != null ? getDocumentProvider()

+				.getDocument(getEditorInput()) : null;

+		if (document instanceof IDiagramDocument) {

+			return ((IDiagramDocument) document).getEditingDomain();

+		}

+		return super.getEditingDomain();

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setDocumentProvider(IEditorInput input) {

+		if (input instanceof IFileEditorInput

+				|| input instanceof URIEditorInput) {

+			setDocumentProvider(ComrelDiagramEditorPlugin.getInstance()

+					.getDocumentProvider());

+		} else {

+			super.setDocumentProvider(input);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void gotoMarker(IMarker marker) {

+		MarkerNavigationService.getInstance().gotoMarker(this, marker);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isSaveAsAllowed() {

+		return true;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void doSaveAs() {

+		performSaveAs(new NullProgressMonitor());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void performSaveAs(IProgressMonitor progressMonitor) {

+		Shell shell = getSite().getShell();

+		IEditorInput input = getEditorInput();

+		SaveAsDialog dialog = new SaveAsDialog(shell);

+		IFile original = input instanceof IFileEditorInput ? ((IFileEditorInput) input)

+				.getFile() : null;

+		if (original != null) {

+			dialog.setOriginalFile(original);

+		}

+		dialog.create();

+		IDocumentProvider provider = getDocumentProvider();

+		if (provider == null) {

+			// editor has been programmatically closed while the dialog was open

+			return;

+		}

+		if (provider.isDeleted(input) && original != null) {

+			String message = NLS.bind(

+					Messages.ComrelDiagramEditor_SavingDeletedFile,

+					original.getName());

+			dialog.setErrorMessage(null);

+			dialog.setMessage(message, IMessageProvider.WARNING);

+		}

+		if (dialog.open() == Window.CANCEL) {

+			if (progressMonitor != null) {

+				progressMonitor.setCanceled(true);

+			}

+			return;

+		}

+		IPath filePath = dialog.getResult();

+		if (filePath == null) {

+			if (progressMonitor != null) {

+				progressMonitor.setCanceled(true);

+			}

+			return;

+		}

+		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();

+		IFile file = workspaceRoot.getFile(filePath);

+		final IEditorInput newInput = new FileEditorInput(file);

+		// Check if the editor is already open

+		IEditorMatchingStrategy matchingStrategy = getEditorDescriptor()

+				.getEditorMatchingStrategy();

+		IEditorReference[] editorRefs = PlatformUI.getWorkbench()

+				.getActiveWorkbenchWindow().getActivePage()

+				.getEditorReferences();

+		for (int i = 0; i < editorRefs.length; i++) {

+			if (matchingStrategy.matches(editorRefs[i], newInput)) {

+				MessageDialog.openWarning(shell,

+						Messages.ComrelDiagramEditor_SaveAsErrorTitle,

+						Messages.ComrelDiagramEditor_SaveAsErrorMessage);

+				return;

+			}

+		}

+		boolean success = false;

+		try {

+			provider.aboutToChange(newInput);

+			getDocumentProvider(newInput).saveDocument(progressMonitor,

+					newInput,

+					getDocumentProvider().getDocument(getEditorInput()), true);

+			success = true;

+		} catch (CoreException x) {

+			IStatus status = x.getStatus();

+			if (status == null || status.getSeverity() != IStatus.CANCEL) {

+				ErrorDialog.openError(shell,

+						Messages.ComrelDiagramEditor_SaveErrorTitle,

+						Messages.ComrelDiagramEditor_SaveErrorMessage,

+						x.getStatus());

+			}

+		} finally {

+			provider.changed(newInput);

+			if (success) {

+				setInput(newInput);

+			}

+		}

+		if (progressMonitor != null) {

+			progressMonitor.setCanceled(!success);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public ShowInContext getShowInContext() {

+		return new ShowInContext(getEditorInput(), getNavigatorSelection());

+	}

+

+	/**

+	 * @generated

+	 */

+	private ISelection getNavigatorSelection() {

+		IDiagramDocument document = getDiagramDocument();

+		if (document == null) {

+			return StructuredSelection.EMPTY;

+		}

+		Diagram diagram = document.getDiagram();

+		IFile file = WorkspaceSynchronizer.getFile(diagram.eResource());

+		if (file != null) {

+			ComrelNavigatorItem item = new ComrelNavigatorItem(diagram, file,

+					false);

+			return new StructuredSelection(item);

+		}

+		return StructuredSelection.EMPTY;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void configureGraphicalViewer() {

+		super.configureGraphicalViewer();

+		DiagramEditorContextMenuProvider provider = new DiagramEditorContextMenuProvider(

+				this, getDiagramGraphicalViewer());

+		getDiagramGraphicalViewer().setContextMenu(provider);

+		getSite().registerContextMenu(ActionIds.DIAGRAM_EDITOR_CONTEXT_MENU,

+				provider, getDiagramGraphicalViewer());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void initializeGraphicalViewer() {

+		super.initializeGraphicalViewer();

+		getDiagramGraphicalViewer().addDropTargetListener(

+				new DropTargetListener(getDiagramGraphicalViewer(),

+						LocalSelectionTransfer.getTransfer()) {

+

+					protected Object getJavaObject(TransferData data) {

+						return LocalSelectionTransfer.getTransfer()

+								.nativeToJava(data);

+					}

+

+				});

+		getDiagramGraphicalViewer().addDropTargetListener(

+				new DropTargetListener(getDiagramGraphicalViewer(),

+						LocalTransfer.getInstance()) {

+

+					protected Object getJavaObject(TransferData data) {

+						return LocalTransfer.getInstance().nativeToJava(data);

+					}

+

+				});

+	}

+

+	/**

+	 * @generated

+	 */

+	private abstract class DropTargetListener extends DiagramDropTargetListener {

+

+		/**

+		 * @generated

+		 */

+		public DropTargetListener(EditPartViewer viewer, Transfer xfer) {

+			super(viewer, xfer);

+		}

+

+		/**

+		 * @generated

+		 */

+		protected List getObjectsBeingDropped() {

+			TransferData data = getCurrentEvent().currentDataType;

+			HashSet<URI> uris = new HashSet<URI>();

+

+			Object transferedObject = getJavaObject(data);

+			if (transferedObject instanceof IStructuredSelection) {

+				IStructuredSelection selection = (IStructuredSelection) transferedObject;

+				for (Iterator<?> it = selection.iterator(); it.hasNext();) {

+					Object nextSelectedObject = it.next();

+					if (nextSelectedObject instanceof ComrelNavigatorItem) {

+						View view = ((ComrelNavigatorItem) nextSelectedObject)

+								.getView();

+						nextSelectedObject = view.getElement();

+					} else if (nextSelectedObject instanceof IAdaptable) {

+						IAdaptable adaptable = (IAdaptable) nextSelectedObject;

+						nextSelectedObject = adaptable

+								.getAdapter(EObject.class);

+					}

+

+					if (nextSelectedObject instanceof EObject) {

+						EObject modelElement = (EObject) nextSelectedObject;

+						uris.add(EcoreUtil.getURI(modelElement));

+					}

+				}

+			}

+

+			ArrayList<EObject> result = new ArrayList<EObject>(uris.size());

+			for (URI nextURI : uris) {

+				EObject modelObject = getEditingDomain().getResourceSet()

+						.getEObject(nextURI, true);

+				result.add(modelObject);

+			}

+			return result;

+		}

+

+		/**

+		 * @generated

+		 */

+		protected abstract Object getJavaObject(TransferData data);

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditorPlugin.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditorPlugin.java
new file mode 100644
index 0000000..af7fc0d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditorPlugin.java
@@ -0,0 +1,316 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;

+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;

+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;

+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;

+import org.eclipse.jface.resource.ImageDescriptor;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.ui.plugin.AbstractUIPlugin;

+import org.osgi.framework.BundleContext;

+

+import comrel.diagram.edit.policies.ComrelBaseItemSemanticEditPolicy;

+import comrel.diagram.expressions.ComrelOCLFactory;

+import comrel.diagram.providers.ElementInitializers;

+import comrel.provider.ComrelItemProviderAdapterFactory;

+

+/**

+ * @generated

+ */

+public class ComrelDiagramEditorPlugin extends AbstractUIPlugin {

+

+	/**

+	 * @generated

+	 */

+	public static final String ID = "org.eclipse.emf.refactor.comrel.diagram"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new PreferencesHint(

+			ID);

+

+	/**

+	 * @generated

+	 */

+	private static ComrelDiagramEditorPlugin instance;

+

+	/**

+	 * @generated

+	 */

+	private ComposedAdapterFactory adapterFactory;

+

+	/**

+	 * @generated

+	 */

+	private ComrelDocumentProvider documentProvider;

+

+	/**

+	 * @generated

+	 */

+	private ComrelBaseItemSemanticEditPolicy.LinkConstraints linkConstraints;

+

+	/**

+	 * @generated

+	 */

+	private ElementInitializers initializers;

+

+	/**

+	 * @generated

+	 */

+	private ComrelOCLFactory oclFactory;

+

+	/**

+	 * @generated

+	 */

+	public ComrelDiagramEditorPlugin() {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void start(BundleContext context) throws Exception {

+		super.start(context);

+		instance = this;

+		PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT,

+				getPreferenceStore());

+		adapterFactory = createAdapterFactory();

+	}

+

+	/**

+	 * @generated

+	 */

+	public void stop(BundleContext context) throws Exception {

+		adapterFactory.dispose();

+		adapterFactory = null;

+		linkConstraints = null;

+		initializers = null;

+		oclFactory = null;

+		instance = null;

+		super.stop(context);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static ComrelDiagramEditorPlugin getInstance() {

+		return instance;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ComposedAdapterFactory createAdapterFactory() {

+		ArrayList<AdapterFactory> factories = new ArrayList<AdapterFactory>();

+		fillItemProviderFactories(factories);

+		return new ComposedAdapterFactory(factories);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void fillItemProviderFactories(List<AdapterFactory> factories) {

+		factories.add(new ComrelItemProviderAdapterFactory());

+		factories.add(new ResourceItemProviderAdapterFactory());

+		factories.add(new ReflectiveItemProviderAdapterFactory());

+	}

+

+	/**

+	 * @generated

+	 */

+	public AdapterFactory getItemProvidersAdapterFactory() {

+		return adapterFactory;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ImageDescriptor getItemImageDescriptor(Object item) {

+		IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory

+				.adapt(item, IItemLabelProvider.class);

+		if (labelProvider != null) {

+			return ExtendedImageRegistry.getInstance().getImageDescriptor(

+					labelProvider.getImage(item));

+		}

+		return null;

+	}

+

+	/**

+	 * Returns an image descriptor for the image file at the given

+	 * plug-in relative path.

+	 *

+	 * @generated

+	 * @param path the path

+	 * @return the image descriptor

+	 */

+	public static ImageDescriptor getBundledImageDescriptor(String path) {

+		return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path);

+	}

+

+	/**

+	 * Respects images residing in any plug-in. If path is relative,

+	 * then this bundle is looked up for the image, otherwise, for absolute 

+	 * path, first segment is taken as id of plug-in with image

+	 *

+	 * @generated

+	 * @param path the path to image, either absolute (with plug-in id as first segment), or relative for bundled images

+	 * @return the image descriptor

+	 */

+	public static ImageDescriptor findImageDescriptor(String path) {

+		final IPath p = new Path(path);

+		if (p.isAbsolute() && p.segmentCount() > 1) {

+			return AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0), p

+					.removeFirstSegments(1).makeAbsolute().toString());

+		} else {

+			return getBundledImageDescriptor(p.makeAbsolute().toString());

+		}

+	}

+

+	/**

+	 * Returns an image for the image file at the given plug-in relative path.

+	 * Client do not need to dispose this image. Images will be disposed automatically.

+	 *

+	 * @generated

+	 * @param path the path

+	 * @return image instance

+	 */

+	public Image getBundledImage(String path) {

+		Image image = getImageRegistry().get(path);

+		if (image == null) {

+			getImageRegistry().put(path, getBundledImageDescriptor(path));

+			image = getImageRegistry().get(path);

+		}

+		return image;

+	}

+

+	/**

+	 * Returns string from plug-in's resource bundle

+	 *

+	 * @generated

+	 */

+	public static String getString(String key) {

+		return Platform.getResourceString(getInstance().getBundle(), "%" + key); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	public ComrelDocumentProvider getDocumentProvider() {

+		if (documentProvider == null) {

+			documentProvider = new ComrelDocumentProvider();

+		}

+		return documentProvider;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ComrelBaseItemSemanticEditPolicy.LinkConstraints getLinkConstraints() {

+		return linkConstraints;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setLinkConstraints(

+			ComrelBaseItemSemanticEditPolicy.LinkConstraints lc) {

+		this.linkConstraints = lc;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ElementInitializers getElementInitializers() {

+		return initializers;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setElementInitializers(ElementInitializers i) {

+		this.initializers = i;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ComrelOCLFactory getComrelOCLFactory() {

+		return oclFactory;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setComrelOCLFactory(ComrelOCLFactory f) {

+		this.oclFactory = f;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void logError(String error) {

+		logError(error, null);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void logError(String error, Throwable throwable) {

+		if (error == null && throwable != null) {

+			error = throwable.getMessage();

+		}

+		getLog().log(

+				new Status(IStatus.ERROR, ComrelDiagramEditorPlugin.ID,

+						IStatus.OK, error, throwable));

+		debug(error, throwable);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void logInfo(String message) {

+		logInfo(message, null);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void logInfo(String message, Throwable throwable) {

+		if (message == null && throwable != null) {

+			message = throwable.getMessage();

+		}

+		getLog().log(

+				new Status(IStatus.INFO, ComrelDiagramEditorPlugin.ID,

+						IStatus.OK, message, throwable));

+		debug(message, throwable);

+	}

+

+	/**

+	 * @generated

+	 */

+	private void debug(String message, Throwable throwable) {

+		if (!isDebugging()) {

+			return;

+		}

+		if (message != null) {

+			System.err.println(message);

+		}

+		if (throwable != null) {

+			throwable.printStackTrace();

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditorUtil.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditorUtil.java
new file mode 100644
index 0000000..a148f64
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramEditorUtil.java
@@ -0,0 +1,495 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.io.IOException;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.commands.operations.OperationHistoryFactory;

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.NullProgressMonitor;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.core.runtime.SubProgressMonitor;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.xmi.XMLResource;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.diagram.core.services.ViewService;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramGraphicalViewer;

+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;

+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;

+import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.dialogs.IDialogSettings;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.jface.wizard.WizardDialog;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.PartInitException;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.part.FileEditorInput;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.MappingVisualization;

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+

+/**

+ * @generated

+ */

+public class ComrelDiagramEditorUtil {

+

+	public static final String DEFAULT_FILENAME = "compositeRefactoring";

+

+	/**

+	 * @generated

+	 */

+	public static Map<?, ?> getSaveOptions() {

+		HashMap<String, Object> saveOptions = new HashMap<String, Object>();

+		saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8"); //$NON-NLS-1$

+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED,

+				Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);

+		return saveOptions;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static boolean openDiagram(Resource diagram)

+			throws PartInitException {

+		String path = diagram.getURI().toPlatformString(true);

+		IResource workspaceResource = ResourcesPlugin.getWorkspace().getRoot()

+				.findMember(new Path(path));

+		if (workspaceResource instanceof IFile) {

+			IWorkbenchPage page = PlatformUI.getWorkbench()

+					.getActiveWorkbenchWindow().getActivePage();

+			return null != page.openEditor(new FileEditorInput(

+					(IFile) workspaceResource), ComrelDiagramEditor.ID);

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void setCharset(IFile file) {

+		if (file == null) {

+			return;

+		}

+		try {

+			file.setCharset("UTF-8", new NullProgressMonitor()); //$NON-NLS-1$

+		} catch (CoreException e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Unable to set charset for file " + file.getFullPath(), e); //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	public static String getUniqueFileName(IPath containerFullPath,

+			String fileName, String extension) {

+		if (containerFullPath == null) {

+			containerFullPath = new Path(""); //$NON-NLS-1$

+		}

+		if (fileName == null || fileName.trim().length() == 0) {

+			fileName = DEFAULT_FILENAME; //$NON-NLS-1$

+		}

+		IPath filePath = containerFullPath.append(fileName);

+		if (extension != null && !extension.equals(filePath.getFileExtension())) {

+			filePath = filePath.addFileExtension(extension);

+		}

+		extension = filePath.getFileExtension();

+		fileName = filePath.removeFileExtension().lastSegment();

+		int i = 1;

+		while (ResourcesPlugin.getWorkspace().getRoot().exists(filePath)) {

+			i++;

+			filePath = containerFullPath.append(fileName + i);

+			if (extension != null) {

+				filePath = filePath.addFileExtension(extension);

+			}

+		}

+		return filePath.lastSegment();

+	}

+

+	/**

+	 * Runs the wizard in a dialog.

+	 * 

+	 * @generated

+	 */

+	public static void runWizard(Shell shell, Wizard wizard, String settingsKey) {

+		IDialogSettings pluginDialogSettings = ComrelDiagramEditorPlugin

+				.getInstance().getDialogSettings();

+		IDialogSettings wizardDialogSettings = pluginDialogSettings

+				.getSection(settingsKey);

+		if (wizardDialogSettings == null) {

+			wizardDialogSettings = pluginDialogSettings

+					.addNewSection(settingsKey);

+		}

+		wizard.setDialogSettings(wizardDialogSettings);

+		WizardDialog dialog = new WizardDialog(shell, wizard);

+		dialog.create();

+		dialog.getShell().setSize(Math.max(500, dialog.getShell().getSize().x),

+				500);

+		dialog.open();

+	}

+

+	/**

+	 * This method should be called within a workspace modify operation since it 

+	 * creates resources.

+	 * 

+	 * @generated NOT

+	 */

+	public static Resource createDiagram(URI diagramURI, URI modelURI,

+			IProgressMonitor progressMonitor) {

+		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE

+				.createEditingDomain();

+		progressMonitor.beginTask(

+				Messages.ComrelDiagramEditorUtil_CreateDiagramProgressTask, 3);

+		final Resource diagramResource = editingDomain.getResourceSet()

+				.createResource(diagramURI);

+		final Resource modelResource = editingDomain.getResourceSet()

+				.createResource(modelURI);

+		final String diagramName = diagramURI.lastSegment();

+		AbstractTransactionalCommand command = new AbstractTransactionalCommand(

+				editingDomain,

+				Messages.ComrelDiagramEditorUtil_CreateDiagramCommandLabel,

+				Collections.EMPTY_LIST) {

+			protected CommandResult doExecuteWithResult(

+					IProgressMonitor monitor, IAdaptable info)

+					throws ExecutionException {

+				CompositeRefactoring model = createInitialModel();

+				attachModelToResource(model, modelResource);

+

+				Diagram diagram = ViewService.createDiagram(model,

+						CompositeRefactoringEditPart.MODEL_ID,

+						ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);

+				if (diagram != null) {

+					diagramResource.getContents().add(diagram);

+					diagram.setName(diagramName);

+					diagram.setElement(model);

+				}

+

+				try {

+					modelResource

+							.save(comrel.diagram.part.ComrelDiagramEditorUtil

+									.getSaveOptions());

+					diagramResource

+							.save(comrel.diagram.part.ComrelDiagramEditorUtil

+									.getSaveOptions());

+				} catch (IOException e) {

+

+					ComrelDiagramEditorPlugin.getInstance().logError(

+							"Unable to store model and diagram resources", e); //$NON-NLS-1$

+				}

+				return CommandResult.newOKCommandResult();

+			}

+		};

+		try {

+			OperationHistoryFactory.getOperationHistory().execute(command,

+					new SubProgressMonitor(progressMonitor, 1), null);

+		} catch (ExecutionException e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Unable to create model and diagram", e); //$NON-NLS-1$

+		}

+		setCharset(WorkspaceSynchronizer.getFile(modelResource));

+		setCharset(WorkspaceSynchronizer.getFile(diagramResource));

+		return diagramResource;

+	}

+

+	/**

+	 * This method should be called within a workspace modify operation since it

+	 * creates resources.

+	 * 

+	 */

+	public static Resource createDiagram(URI diagramURI, URI modelURI,

+			IProgressMonitor progressMonitor, final String customDiagramName,

+			final String namespaceURI, final String connectionVisualization) {

+		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE

+				.createEditingDomain();

+		progressMonitor.beginTask(

+				Messages.ComrelDiagramEditorUtil_CreateDiagramProgressTask, 3);

+		final Resource diagramResource = editingDomain.getResourceSet()

+				.createResource(diagramURI);

+		final Resource modelResource = editingDomain.getResourceSet()

+				.createResource(modelURI);

+		final String diagramName = diagramURI.lastSegment();

+		AbstractTransactionalCommand command = new AbstractTransactionalCommand(

+				editingDomain,

+				Messages.ComrelDiagramEditorUtil_CreateDiagramCommandLabel,

+				Collections.EMPTY_LIST) {

+			protected CommandResult doExecuteWithResult(

+					IProgressMonitor monitor, IAdaptable info)

+					throws ExecutionException {

+				CompositeRefactoring model = createInitialModel();

+				attachModelToResource(model, modelResource);

+				if (customDiagramName == null) {

+					model.setName("");

+				} else {

+					model.setName(customDiagramName.trim());

+				}

+				model.setNamespaceUri(namespaceURI);

+				model.setMappingVisualization(MappingVisualization

+						.get(connectionVisualization));

+				Diagram diagram = ViewService.createDiagram(model,

+						CompositeRefactoringEditPart.MODEL_ID,

+						ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);

+				if (diagram != null) {

+					diagramResource.getContents().add(diagram);

+					diagram.setName(diagramName);

+					diagram.setElement(model);

+				}

+

+				try {

+					modelResource

+							.save(comrel.diagram.part.ComrelDiagramEditorUtil

+									.getSaveOptions());

+					diagramResource

+							.save(comrel.diagram.part.ComrelDiagramEditorUtil

+									.getSaveOptions());

+				} catch (IOException e) {

+

+					ComrelDiagramEditorPlugin.getInstance().logError(

+							"Unable to store model and diagram resources", e); //$NON-NLS-1$

+				}

+				return CommandResult.newOKCommandResult();

+			}

+		};

+		try {

+			OperationHistoryFactory.getOperationHistory().execute(command,

+					new SubProgressMonitor(progressMonitor, 1), null);

+		} catch (ExecutionException e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Unable to create model and diagram", e); //$NON-NLS-1$

+		}

+		setCharset(WorkspaceSynchronizer.getFile(modelResource));

+		setCharset(WorkspaceSynchronizer.getFile(diagramResource));

+		return diagramResource;

+	}

+

+	/**

+	 * Create a new instance of domain element associated with canvas.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static CompositeRefactoring createInitialModel() {

+		return ComrelFactory.eINSTANCE.createCompositeRefactoring();

+	}

+

+	/**

+	 * Store model element in the resource.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static void attachModelToResource(CompositeRefactoring model,

+			Resource resource) {

+		resource.getContents().add(model);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void selectElementsInDiagram(

+			IDiagramWorkbenchPart diagramPart, List<EditPart> editParts) {

+		diagramPart.getDiagramGraphicalViewer().deselectAll();

+

+		EditPart firstPrimary = null;

+		for (EditPart nextPart : editParts) {

+			diagramPart.getDiagramGraphicalViewer().appendSelection(nextPart);

+			if (firstPrimary == null && nextPart instanceof IPrimaryEditPart) {

+				firstPrimary = nextPart;

+			}

+		}

+

+		if (!editParts.isEmpty()) {

+			diagramPart.getDiagramGraphicalViewer().reveal(

+					firstPrimary != null ? firstPrimary : (EditPart) editParts

+							.get(0));

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private static int findElementsInDiagramByID(DiagramEditPart diagramPart,

+			EObject element, List<EditPart> editPartCollector) {

+		IDiagramGraphicalViewer viewer = (IDiagramGraphicalViewer) diagramPart

+				.getViewer();

+		final int intialNumOfEditParts = editPartCollector.size();

+

+		if (element instanceof View) { // support notation element lookup

+			EditPart editPart = (EditPart) viewer.getEditPartRegistry().get(

+					element);

+			if (editPart != null) {

+				editPartCollector.add(editPart);

+				return 1;

+			}

+		}

+

+		String elementID = EMFCoreUtil.getProxyID(element);

+		@SuppressWarnings("unchecked")

+		List<EditPart> associatedParts = viewer.findEditPartsForElement(

+				elementID, IGraphicalEditPart.class);

+		// perform the possible hierarchy disjoint -> take the top-most parts only

+		for (EditPart nextPart : associatedParts) {

+			EditPart parentPart = nextPart.getParent();

+			while (parentPart != null && !associatedParts.contains(parentPart)) {

+				parentPart = parentPart.getParent();

+			}

+			if (parentPart == null) {

+				editPartCollector.add(nextPart);

+			}

+		}

+

+		if (intialNumOfEditParts == editPartCollector.size()) {

+			if (!associatedParts.isEmpty()) {

+				editPartCollector.add(associatedParts.get(0));

+			} else {

+				if (element.eContainer() != null) {

+					return findElementsInDiagramByID(diagramPart,

+							element.eContainer(), editPartCollector);

+				}

+			}

+		}

+		return editPartCollector.size() - intialNumOfEditParts;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static View findView(DiagramEditPart diagramEditPart,

+			EObject targetElement, LazyElement2ViewMap lazyElement2ViewMap) {

+		boolean hasStructuralURI = false;

+		if (targetElement.eResource() instanceof XMLResource) {

+			hasStructuralURI = ((XMLResource) targetElement.eResource())

+					.getID(targetElement) == null;

+		}

+

+		View view = null;

+		LinkedList<EditPart> editPartHolder = new LinkedList<EditPart>();

+		if (hasStructuralURI

+				&& !lazyElement2ViewMap.getElement2ViewMap().isEmpty()) {

+			view = lazyElement2ViewMap.getElement2ViewMap().get(targetElement);

+		} else if (findElementsInDiagramByID(diagramEditPart, targetElement,

+				editPartHolder) > 0) {

+			EditPart editPart = editPartHolder.get(0);

+			view = editPart.getModel() instanceof View ? (View) editPart

+					.getModel() : null;

+		}

+

+		return (view == null) ? diagramEditPart.getDiagramView() : view;

+	}

+

+	/**

+	 * XXX This is quite suspicious code (especially editPartTmpHolder) and likely to be removed soon

+	 * @generated

+	 */

+	public static class LazyElement2ViewMap {

+		/**

+		 * @generated

+		 */

+		private Map<EObject, View> element2ViewMap;

+

+		/**

+		 * @generated

+		 */

+		private View scope;

+

+		/**

+		 * @generated

+		 */

+		private Set<? extends EObject> elementSet;

+

+		/**

+		 * @generated

+		 */

+		public LazyElement2ViewMap(View scope, Set<? extends EObject> elements) {

+			this.scope = scope;

+			this.elementSet = elements;

+		}

+

+		/**

+		 * @generated

+		 */

+		public final Map<EObject, View> getElement2ViewMap() {

+			if (element2ViewMap == null) {

+				element2ViewMap = new HashMap<EObject, View>();

+				// map possible notation elements to itself as these can't be found by view.getElement()

+				for (EObject element : elementSet) {

+					if (element instanceof View) {

+						View view = (View) element;

+						if (view.getDiagram() == scope.getDiagram()) {

+							element2ViewMap.put(element, view); // take only those that part of our diagram

+						}

+					}

+				}

+

+				buildElement2ViewMap(scope, element2ViewMap, elementSet);

+			}

+			return element2ViewMap;

+		}

+

+		/**

+		 * @generated

+		 */

+		private static boolean buildElement2ViewMap(View parentView,

+				Map<EObject, View> element2ViewMap,

+				Set<? extends EObject> elements) {

+			if (elements.size() == element2ViewMap.size()) {

+				return true;

+			}

+

+			if (parentView.isSetElement()

+					&& !element2ViewMap.containsKey(parentView.getElement())

+					&& elements.contains(parentView.getElement())) {

+				element2ViewMap.put(parentView.getElement(), parentView);

+				if (elements.size() == element2ViewMap.size()) {

+					return true;

+				}

+			}

+			boolean complete = false;

+			for (Iterator<?> it = parentView.getChildren().iterator(); it

+					.hasNext() && !complete;) {

+				complete = buildElement2ViewMap((View) it.next(),

+						element2ViewMap, elements);

+			}

+			for (Iterator<?> it = parentView.getSourceEdges().iterator(); it

+					.hasNext() && !complete;) {

+				complete = buildElement2ViewMap((View) it.next(),

+						element2ViewMap, elements);

+			}

+			for (Iterator<?> it = parentView.getTargetEdges().iterator(); it

+					.hasNext() && !complete;) {

+				complete = buildElement2ViewMap((View) it.next(),

+						element2ViewMap, elements);

+			}

+			return complete;

+		}

+	} //LazyElement2ViewMap	

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramUpdateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramUpdateCommand.java
new file mode 100644
index 0000000..e92df50
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramUpdateCommand.java
@@ -0,0 +1,88 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.Iterator;

+import java.util.List;

+

+import org.eclipse.core.commands.ExecutionEvent;

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.commands.IHandler;

+import org.eclipse.core.commands.IHandlerListener;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.ui.PlatformUI;

+

+/**

+ * @generated

+ */

+public class ComrelDiagramUpdateCommand implements IHandler {

+

+	/**

+	 * @generated

+	 */

+	public void addHandlerListener(IHandlerListener handlerListener) {

+	}

+

+	/**

+	 * @generated

+	 */

+	public void dispose() {

+	}

+

+	/**

+	 * @generated

+	 */

+	public Object execute(ExecutionEvent event) throws ExecutionException {

+		ISelection selection = PlatformUI.getWorkbench()

+				.getActiveWorkbenchWindow().getSelectionService()

+				.getSelection();

+		if (selection instanceof IStructuredSelection) {

+			IStructuredSelection structuredSelection = (IStructuredSelection) selection;

+			if (structuredSelection.size() != 1) {

+				return null;

+			}

+			if (structuredSelection.getFirstElement() instanceof EditPart

+					&& ((EditPart) structuredSelection.getFirstElement())

+							.getModel() instanceof View) {

+				EObject modelElement = ((View) ((EditPart) structuredSelection

+						.getFirstElement()).getModel()).getElement();

+				List editPolicies = CanonicalEditPolicy

+						.getRegisteredEditPolicies(modelElement);

+				for (Iterator it = editPolicies.iterator(); it.hasNext();) {

+					CanonicalEditPolicy nextEditPolicy = (CanonicalEditPolicy) it

+							.next();

+					nextEditPolicy.refresh();

+				}

+

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isEnabled() {

+		return true;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isHandled() {

+		return true;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void removeHandlerListener(IHandlerListener handlerListener) {

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramUpdater.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramUpdater.java
new file mode 100644
index 0000000..eec11e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDiagramUpdater.java
@@ -0,0 +1,8850 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.AtomicUnit;

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.ConditionCheck;

+import comrel.ConditionalUnit;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MultiFeatureUnit;

+import comrel.MultiFilterUnit;

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+import comrel.MultiSinglePortMapping;

+import comrel.ParallelQueuedUnit;

+import comrel.RefactoringUnit;

+import comrel.SequentialUnit;

+import comrel.SingleFeatureUnit;

+import comrel.SingleFilterUnit;

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+import comrel.SingleQueuedUnit;

+import comrel.diagram.edit.parts.*;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ComrelDiagramUpdater {

+

+	/**

+	 * @generated

+	 */

+	public static boolean isShortcutOrphaned(View view) {

+		return !view.isSetElement() || view.getElement() == null

+				|| view.getElement().eIsProxy();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSemanticChildren(View view) {

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			return getCompositeRefactoring_1000SemanticChildren(view);

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_2002SemanticChildren(view);

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return getParallelQueuedUnit_2003SemanticChildren(view);

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return getSingleQueuedUnit_2004SemanticChildren(view);

+		case SequentialUnitEditPart.VISUAL_ID:

+			return getSequentialUnit_2005SemanticChildren(view);

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return getConditionalUnit_2006SemanticChildren(view);

+		case AtomicUnitEditPart.VISUAL_ID:

+			return getAtomicUnit_2007SemanticChildren(view);

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3003SemanticChildren(view);

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3004SemanticChildren(view);

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3007SemanticChildren(view);

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3008SemanticChildren(view);

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3012SemanticChildren(view);

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return getSingleFilterUnit_3016SemanticChildren(view);

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return getMultiFilterUnit_3019SemanticChildren(view);

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3022SemanticChildren(view);

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3025SemanticChildren(view);

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return getSequentialUnit_3026SemanticChildren(view);

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3029SemanticChildren(view);

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return getConditionalUnit_3030SemanticChildren(view);

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3033SemanticChildren(view);

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return getAtomicUnit_3034SemanticChildren(view);

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3036SemanticChildren(view);

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3037SemanticChildren(view);

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3038SemanticChildren(view);

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3039SemanticChildren(view);

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3040SemanticChildren(view);

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3041SemanticChildren(view);

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3042SemanticChildren(view);

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3043SemanticChildren(view);

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return getSequentialUnit_3044SemanticChildren(view);

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3045SemanticChildren(view);

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return getConditionalUnit_3046SemanticChildren(view);

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3047SemanticChildren(view);

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3048SemanticChildren(view);

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return getAtomicUnit_3049SemanticChildren(view);

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3050SemanticChildren(view);

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3051SemanticChildren(view);

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3052SemanticChildren(view);

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3053SemanticChildren(view);

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3054SemanticChildren(view);

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3055SemanticChildren(view);

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3056SemanticChildren(view);

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3057SemanticChildren(view);

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3058SemanticChildren(view);

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3059SemanticChildren(view);

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return getSequentialUnit_3060SemanticChildren(view);

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3061SemanticChildren(view);

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3062SemanticChildren(view);

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3063SemanticChildren(view);

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3064SemanticChildren(view);

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3065SemanticChildren(view);

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return getConditionalUnit_3066SemanticChildren(view);

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3067SemanticChildren(view);

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return getAtomicUnit_3068SemanticChildren(view);

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return getSequentialUnit_3069SemanticChildren(view);

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return getSequentialUnit_3070SemanticChildren(view);

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return getConditionalUnit_3071SemanticChildren(view);

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return getConditionalUnit_3072SemanticChildren(view);

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return getSequentialUnit_3073SemanticChildren(view);

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return getAtomicUnit_3074SemanticChildren(view);

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return getConditionalUnit_3075SemanticChildren(view);

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return getAtomicUnit_3077SemanticChildren(view);

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return getAtomicUnit_3078SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7001SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7002SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7003SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7004SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7005SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7006SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7007SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7008SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7009SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7010SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7011SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7012SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7013SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7014SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7015SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7016SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7017SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7018SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7019SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7020SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7021SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7022SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7023SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7024SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7025SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7026SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7027SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7028SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7029SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7030SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7031SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7032SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7033SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7034SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7035SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7036SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7037SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7038SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7039SemanticChildren(view);

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7040SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7041SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7042SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7043SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7044SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7045SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7046SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7047SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7048SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7049SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7050SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7051SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7052SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7053SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7054SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7055SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7056SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7057SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7058SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7059SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7060SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7061SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7062SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7063SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7064SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7065SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7066SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7067SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7068SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7069SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7070SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7071SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7072SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7073SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7074SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7075SemanticChildren(view);

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+			return getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7076SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7077SemanticChildren(view);

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+			return getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7078SemanticChildren(view);

+		case SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitHelperUnitsCompartment_7079SemanticChildren(view);

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+			return getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7080SemanticChildren(view);

+		case ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitIfCompartment_7081SemanticChildren(view);

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitHelperUnitsCompartment_7082SemanticChildren(view);

+		case ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitThenCompartment_7083SemanticChildren(view);

+		case ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID:

+			return getConditionalUnitConditionalUnitElseCompartment_7084SemanticChildren(view);

+		}

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCompositeRefactoring_1000SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CompositeRefactoring modelElement = (CompositeRefactoring) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			RefactoringUnit childElement = modelElement

+					.getMainRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_2002SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_2003SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_2004SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_2005SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_2006SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_2007SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_3003SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_3004SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_3007SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFeatureUnit_3008SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFeatureUnit modelElement = (SingleFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFeatureUnit_3012SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFeatureUnit modelElement = (MultiFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFilterUnit_3016SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFilterUnit modelElement = (SingleFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFilterUnit_3019SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFilterUnit modelElement = (MultiFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_3022SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_3025SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_3026SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_3029SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_3030SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_3033SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_3034SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_3036SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_3037SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFeatureUnit_3038SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFeatureUnit modelElement = (SingleFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFeatureUnit_3039SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFeatureUnit modelElement = (MultiFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFilterUnit_3040SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFilterUnit modelElement = (SingleFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFilterUnit_3041SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFilterUnit modelElement = (MultiFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_3042SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_3043SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_3044SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_3045SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_3046SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnit_3047SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnit_3048SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) view

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		for (Iterator<?> it = modelElement.getMultiInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_3049SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFeatureUnit_3050SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFeatureUnit modelElement = (SingleFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFeatureUnit_3051SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFeatureUnit modelElement = (MultiFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFilterUnit_3052SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFilterUnit modelElement = (SingleFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFilterUnit_3053SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFilterUnit modelElement = (MultiFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_3054SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFeatureUnit_3055SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFeatureUnit modelElement = (SingleFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFeatureUnit_3056SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFeatureUnit modelElement = (MultiFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFilterUnit_3057SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFilterUnit modelElement = (SingleFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFilterUnit_3058SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFilterUnit modelElement = (MultiFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_3059SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_3060SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFeatureUnit_3061SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFeatureUnit modelElement = (SingleFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFeatureUnit_3062SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFeatureUnit modelElement = (MultiFeatureUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			SingleInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		for (Iterator<?> it = modelElement.getSecondaryInputPorts().iterator(); it

+				.hasNext();) {

+			MultiInputPort childElement = (MultiInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPortEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleFilterUnit_3063SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleFilterUnit modelElement = (SingleFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			SingleOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getMultiFilterUnit_3064SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		MultiFilterUnit modelElement = (MultiFilterUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			MultiInputPort childElement = modelElement.getInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		{

+			MultiOutputPort childElement = modelElement.getOutputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiOutputPort2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_3065SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_3066SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnit_3067SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getSingleInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		{

+			MultiInputPort childElement = modelElement.getMultiInputPort();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == MultiInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_3068SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_3069SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_3070SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_3071SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_3072SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnit_3073SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_3074SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnit_3075SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			InputPort childElement = (InputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort8EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_3077SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getAtomicUnit_3078SemanticChildren(

+			View view) {

+		if (!view.isSetElement()) {

+			return Collections.emptyList();

+		}

+		AtomicUnit modelElement = (AtomicUnit) view.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getInputPorts().iterator(); it

+				.hasNext();) {

+			SingleInputPort childElement = (SingleInputPort) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleInputPort9EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7001SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7002SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7003SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7004SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7005SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7006SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7007SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7008SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7009SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7010SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7011SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7012SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7013SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7014SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7015SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7016SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7017SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7018SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7019SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7020SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7021SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7022SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7023SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7024SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7025SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7026SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7027SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7028SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7029SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7030SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7031SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7032SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7033SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7034SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7035SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7036SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7037SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7038SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment_7039SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnitEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getCartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment_7040SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		CartesianQueuedUnit modelElement = (CartesianQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7041SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7042SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7043SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7044SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7045SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7046SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7047SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7048SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7049SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7050SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7051SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7052SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7053SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7054SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7055SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7056SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7057SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7058SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7059SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7060SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7061SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7062SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7063SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7064SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7065SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7066SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7067SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7068SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7069SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7070SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7071SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7072SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7073SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7074SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment_7075SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit2EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment_7076SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ParallelQueuedUnit modelElement = (ParallelQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnits();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment_7077SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment_7078SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SingleQueuedUnit modelElement = (SingleQueuedUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getRefactoringUnit();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitHelperUnitsCompartment_7079SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getSequentialUnitSequentialUnitRefactoringUnitsCompartment_7080SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		SequentialUnit modelElement = (SequentialUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getRefactoringUnits().iterator(); it

+				.hasNext();) {

+			RefactoringUnit childElement = (RefactoringUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ParallelQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SequentialUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == ConditionalUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == AtomicUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitIfCompartment_7081SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			ConditionCheck childElement = modelElement.getIf();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == ConditionCheckEditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitHelperUnitsCompartment_7082SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		for (Iterator<?> it = modelElement.getHelperUnits().iterator(); it

+				.hasNext();) {

+			HelperUnit childElement = (HelperUnit) it.next();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == SingleFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFeatureUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == SingleFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+			if (visualID == MultiFilterUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+				continue;

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitThenCompartment_7083SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getThen();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit3EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit4EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit5EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit6EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelNodeDescriptor> getConditionalUnitConditionalUnitElseCompartment_7084SemanticChildren(

+			View view) {

+		if (false == view.eContainer() instanceof View) {

+			return Collections.emptyList();

+		}

+		View containerView = (View) view.eContainer();

+		if (!containerView.isSetElement()) {

+			return Collections.emptyList();

+		}

+		ConditionalUnit modelElement = (ConditionalUnit) containerView

+				.getElement();

+		LinkedList<ComrelNodeDescriptor> result = new LinkedList<ComrelNodeDescriptor>();

+		{

+			RefactoringUnit childElement = modelElement.getElse();

+			int visualID = ComrelVisualIDRegistry.getNodeVisualID(view,

+					childElement);

+			if (visualID == CartesianQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ParallelQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SingleQueuedUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == SequentialUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == ConditionalUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+			if (visualID == AtomicUnit7EditPart.VISUAL_ID) {

+				result.add(new ComrelNodeDescriptor(childElement, visualID));

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getContainedLinks(View view) {

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			return getCompositeRefactoring_1000ContainedLinks(view);

+		case SingleInputPortEditPart.VISUAL_ID:

+			return getSingleInputPort_2001ContainedLinks(view);

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_2002ContainedLinks(view);

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return getParallelQueuedUnit_2003ContainedLinks(view);

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return getSingleQueuedUnit_2004ContainedLinks(view);

+		case SequentialUnitEditPart.VISUAL_ID:

+			return getSequentialUnit_2005ContainedLinks(view);

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return getConditionalUnit_2006ContainedLinks(view);

+		case AtomicUnitEditPart.VISUAL_ID:

+			return getAtomicUnit_2007ContainedLinks(view);

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return getSingleInputPort_3001ContainedLinks(view);

+		case MultiInputPortEditPart.VISUAL_ID:

+			return getMultiInputPort_3002ContainedLinks(view);

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3003ContainedLinks(view);

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3004ContainedLinks(view);

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return getSingleInputPort_3005ContainedLinks(view);

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return getMultiInputPort_3006ContainedLinks(view);

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3007ContainedLinks(view);

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3008ContainedLinks(view);

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return getSingleInputPort_3009ContainedLinks(view);

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return getMultiInputPort_3010ContainedLinks(view);

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return getSingleOutputPort_3011ContainedLinks(view);

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3012ContainedLinks(view);

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return getSingleInputPort_3013ContainedLinks(view);

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return getMultiInputPort_3014ContainedLinks(view);

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return getMultiOutputPort_3015ContainedLinks(view);

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return getSingleFilterUnit_3016ContainedLinks(view);

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return getMultiInputPort_3017ContainedLinks(view);

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return getSingleOutputPort_3018ContainedLinks(view);

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return getMultiFilterUnit_3019ContainedLinks(view);

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return getMultiInputPort_3020ContainedLinks(view);

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return getMultiOutputPort_3021ContainedLinks(view);

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3022ContainedLinks(view);

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return getSingleInputPort_3023ContainedLinks(view);

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return getMultiInputPort_3024ContainedLinks(view);

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3025ContainedLinks(view);

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return getSequentialUnit_3026ContainedLinks(view);

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return getSingleInputPort_3027ContainedLinks(view);

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return getMultiInputPort_3028ContainedLinks(view);

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3029ContainedLinks(view);

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return getConditionalUnit_3030ContainedLinks(view);

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return getSingleInputPort_3031ContainedLinks(view);

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return getMultiInputPort_3032ContainedLinks(view);

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3033ContainedLinks(view);

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return getAtomicUnit_3034ContainedLinks(view);

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return getSingleInputPort_3035ContainedLinks(view);

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3036ContainedLinks(view);

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3037ContainedLinks(view);

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3038ContainedLinks(view);

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3039ContainedLinks(view);

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3040ContainedLinks(view);

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3041ContainedLinks(view);

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3042ContainedLinks(view);

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3043ContainedLinks(view);

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return getSequentialUnit_3044ContainedLinks(view);

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3045ContainedLinks(view);

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return getConditionalUnit_3046ContainedLinks(view);

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3047ContainedLinks(view);

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3048ContainedLinks(view);

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return getAtomicUnit_3049ContainedLinks(view);

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3050ContainedLinks(view);

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3051ContainedLinks(view);

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3052ContainedLinks(view);

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3053ContainedLinks(view);

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3054ContainedLinks(view);

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3055ContainedLinks(view);

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3056ContainedLinks(view);

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3057ContainedLinks(view);

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3058ContainedLinks(view);

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3059ContainedLinks(view);

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return getSequentialUnit_3060ContainedLinks(view);

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3061ContainedLinks(view);

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3062ContainedLinks(view);

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3063ContainedLinks(view);

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3064ContainedLinks(view);

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3065ContainedLinks(view);

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return getConditionalUnit_3066ContainedLinks(view);

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3067ContainedLinks(view);

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return getAtomicUnit_3068ContainedLinks(view);

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return getSequentialUnit_3069ContainedLinks(view);

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return getSequentialUnit_3070ContainedLinks(view);

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return getConditionalUnit_3071ContainedLinks(view);

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return getConditionalUnit_3072ContainedLinks(view);

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return getSequentialUnit_3073ContainedLinks(view);

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return getAtomicUnit_3074ContainedLinks(view);

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return getConditionalUnit_3075ContainedLinks(view);

+		case ConditionCheckEditPart.VISUAL_ID:

+			return getConditionCheck_3076ContainedLinks(view);

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return getAtomicUnit_3077ContainedLinks(view);

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return getAtomicUnit_3078ContainedLinks(view);

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getSinglePortMapping_4001ContainedLinks(view);

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getMultiPortMapping_4002ContainedLinks(view);

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getMultiSinglePortMapping_4003ContainedLinks(view);

+		}

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getIncomingLinks(View view) {

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case SingleInputPortEditPart.VISUAL_ID:

+			return getSingleInputPort_2001IncomingLinks(view);

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_2002IncomingLinks(view);

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return getParallelQueuedUnit_2003IncomingLinks(view);

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return getSingleQueuedUnit_2004IncomingLinks(view);

+		case SequentialUnitEditPart.VISUAL_ID:

+			return getSequentialUnit_2005IncomingLinks(view);

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return getConditionalUnit_2006IncomingLinks(view);

+		case AtomicUnitEditPart.VISUAL_ID:

+			return getAtomicUnit_2007IncomingLinks(view);

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return getSingleInputPort_3001IncomingLinks(view);

+		case MultiInputPortEditPart.VISUAL_ID:

+			return getMultiInputPort_3002IncomingLinks(view);

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3003IncomingLinks(view);

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3004IncomingLinks(view);

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return getSingleInputPort_3005IncomingLinks(view);

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return getMultiInputPort_3006IncomingLinks(view);

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3007IncomingLinks(view);

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3008IncomingLinks(view);

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return getSingleInputPort_3009IncomingLinks(view);

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return getMultiInputPort_3010IncomingLinks(view);

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return getSingleOutputPort_3011IncomingLinks(view);

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3012IncomingLinks(view);

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return getSingleInputPort_3013IncomingLinks(view);

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return getMultiInputPort_3014IncomingLinks(view);

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return getMultiOutputPort_3015IncomingLinks(view);

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return getSingleFilterUnit_3016IncomingLinks(view);

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return getMultiInputPort_3017IncomingLinks(view);

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return getSingleOutputPort_3018IncomingLinks(view);

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return getMultiFilterUnit_3019IncomingLinks(view);

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return getMultiInputPort_3020IncomingLinks(view);

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return getMultiOutputPort_3021IncomingLinks(view);

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3022IncomingLinks(view);

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return getSingleInputPort_3023IncomingLinks(view);

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return getMultiInputPort_3024IncomingLinks(view);

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3025IncomingLinks(view);

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return getSequentialUnit_3026IncomingLinks(view);

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return getSingleInputPort_3027IncomingLinks(view);

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return getMultiInputPort_3028IncomingLinks(view);

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3029IncomingLinks(view);

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return getConditionalUnit_3030IncomingLinks(view);

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return getSingleInputPort_3031IncomingLinks(view);

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return getMultiInputPort_3032IncomingLinks(view);

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3033IncomingLinks(view);

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return getAtomicUnit_3034IncomingLinks(view);

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return getSingleInputPort_3035IncomingLinks(view);

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3036IncomingLinks(view);

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3037IncomingLinks(view);

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3038IncomingLinks(view);

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3039IncomingLinks(view);

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3040IncomingLinks(view);

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3041IncomingLinks(view);

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3042IncomingLinks(view);

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3043IncomingLinks(view);

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return getSequentialUnit_3044IncomingLinks(view);

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3045IncomingLinks(view);

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return getConditionalUnit_3046IncomingLinks(view);

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3047IncomingLinks(view);

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3048IncomingLinks(view);

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return getAtomicUnit_3049IncomingLinks(view);

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3050IncomingLinks(view);

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3051IncomingLinks(view);

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3052IncomingLinks(view);

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3053IncomingLinks(view);

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3054IncomingLinks(view);

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3055IncomingLinks(view);

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3056IncomingLinks(view);

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3057IncomingLinks(view);

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3058IncomingLinks(view);

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3059IncomingLinks(view);

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return getSequentialUnit_3060IncomingLinks(view);

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3061IncomingLinks(view);

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3062IncomingLinks(view);

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3063IncomingLinks(view);

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3064IncomingLinks(view);

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3065IncomingLinks(view);

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return getConditionalUnit_3066IncomingLinks(view);

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3067IncomingLinks(view);

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return getAtomicUnit_3068IncomingLinks(view);

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return getSequentialUnit_3069IncomingLinks(view);

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return getSequentialUnit_3070IncomingLinks(view);

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return getConditionalUnit_3071IncomingLinks(view);

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return getConditionalUnit_3072IncomingLinks(view);

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return getSequentialUnit_3073IncomingLinks(view);

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return getAtomicUnit_3074IncomingLinks(view);

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return getConditionalUnit_3075IncomingLinks(view);

+		case ConditionCheckEditPart.VISUAL_ID:

+			return getConditionCheck_3076IncomingLinks(view);

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return getAtomicUnit_3077IncomingLinks(view);

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return getAtomicUnit_3078IncomingLinks(view);

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getSinglePortMapping_4001IncomingLinks(view);

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getMultiPortMapping_4002IncomingLinks(view);

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getMultiSinglePortMapping_4003IncomingLinks(view);

+		}

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getOutgoingLinks(View view) {

+		switch (ComrelVisualIDRegistry.getVisualID(view)) {

+		case SingleInputPortEditPart.VISUAL_ID:

+			return getSingleInputPort_2001OutgoingLinks(view);

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_2002OutgoingLinks(view);

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return getParallelQueuedUnit_2003OutgoingLinks(view);

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return getSingleQueuedUnit_2004OutgoingLinks(view);

+		case SequentialUnitEditPart.VISUAL_ID:

+			return getSequentialUnit_2005OutgoingLinks(view);

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return getConditionalUnit_2006OutgoingLinks(view);

+		case AtomicUnitEditPart.VISUAL_ID:

+			return getAtomicUnit_2007OutgoingLinks(view);

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return getSingleInputPort_3001OutgoingLinks(view);

+		case MultiInputPortEditPart.VISUAL_ID:

+			return getMultiInputPort_3002OutgoingLinks(view);

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3003OutgoingLinks(view);

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3004OutgoingLinks(view);

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return getSingleInputPort_3005OutgoingLinks(view);

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return getMultiInputPort_3006OutgoingLinks(view);

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3007OutgoingLinks(view);

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3008OutgoingLinks(view);

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return getSingleInputPort_3009OutgoingLinks(view);

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return getMultiInputPort_3010OutgoingLinks(view);

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return getSingleOutputPort_3011OutgoingLinks(view);

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3012OutgoingLinks(view);

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return getSingleInputPort_3013OutgoingLinks(view);

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return getMultiInputPort_3014OutgoingLinks(view);

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return getMultiOutputPort_3015OutgoingLinks(view);

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return getSingleFilterUnit_3016OutgoingLinks(view);

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return getMultiInputPort_3017OutgoingLinks(view);

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return getSingleOutputPort_3018OutgoingLinks(view);

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return getMultiFilterUnit_3019OutgoingLinks(view);

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return getMultiInputPort_3020OutgoingLinks(view);

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return getMultiOutputPort_3021OutgoingLinks(view);

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3022OutgoingLinks(view);

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return getSingleInputPort_3023OutgoingLinks(view);

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return getMultiInputPort_3024OutgoingLinks(view);

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3025OutgoingLinks(view);

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return getSequentialUnit_3026OutgoingLinks(view);

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return getSingleInputPort_3027OutgoingLinks(view);

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return getMultiInputPort_3028OutgoingLinks(view);

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3029OutgoingLinks(view);

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return getConditionalUnit_3030OutgoingLinks(view);

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return getSingleInputPort_3031OutgoingLinks(view);

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return getMultiInputPort_3032OutgoingLinks(view);

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3033OutgoingLinks(view);

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return getAtomicUnit_3034OutgoingLinks(view);

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return getSingleInputPort_3035OutgoingLinks(view);

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3036OutgoingLinks(view);

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3037OutgoingLinks(view);

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3038OutgoingLinks(view);

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3039OutgoingLinks(view);

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3040OutgoingLinks(view);

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3041OutgoingLinks(view);

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3042OutgoingLinks(view);

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3043OutgoingLinks(view);

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return getSequentialUnit_3044OutgoingLinks(view);

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3045OutgoingLinks(view);

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return getConditionalUnit_3046OutgoingLinks(view);

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnit_3047OutgoingLinks(view);

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return getParallelQueuedUnit_3048OutgoingLinks(view);

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return getAtomicUnit_3049OutgoingLinks(view);

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3050OutgoingLinks(view);

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3051OutgoingLinks(view);

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3052OutgoingLinks(view);

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3053OutgoingLinks(view);

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3054OutgoingLinks(view);

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3055OutgoingLinks(view);

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3056OutgoingLinks(view);

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3057OutgoingLinks(view);

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3058OutgoingLinks(view);

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3059OutgoingLinks(view);

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return getSequentialUnit_3060OutgoingLinks(view);

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return getSingleFeatureUnit_3061OutgoingLinks(view);

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return getMultiFeatureUnit_3062OutgoingLinks(view);

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return getSingleFilterUnit_3063OutgoingLinks(view);

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return getMultiFilterUnit_3064OutgoingLinks(view);

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3065OutgoingLinks(view);

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return getConditionalUnit_3066OutgoingLinks(view);

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return getSingleQueuedUnit_3067OutgoingLinks(view);

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return getAtomicUnit_3068OutgoingLinks(view);

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return getSequentialUnit_3069OutgoingLinks(view);

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return getSequentialUnit_3070OutgoingLinks(view);

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return getConditionalUnit_3071OutgoingLinks(view);

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return getConditionalUnit_3072OutgoingLinks(view);

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return getSequentialUnit_3073OutgoingLinks(view);

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return getAtomicUnit_3074OutgoingLinks(view);

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return getConditionalUnit_3075OutgoingLinks(view);

+		case ConditionCheckEditPart.VISUAL_ID:

+			return getConditionCheck_3076OutgoingLinks(view);

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return getAtomicUnit_3077OutgoingLinks(view);

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return getAtomicUnit_3078OutgoingLinks(view);

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return getSinglePortMapping_4001OutgoingLinks(view);

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return getMultiPortMapping_4002OutgoingLinks(view);

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return getMultiSinglePortMapping_4003OutgoingLinks(view);

+		}

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCompositeRefactoring_1000ContainedLinks(

+			View view) {

+		CompositeRefactoring modelElement = (CompositeRefactoring) view

+				.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getContainedTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		result.addAll(getContainedTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getContainedTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_2001ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_2002ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_2003ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_2004ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_2005ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_2006ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_2007ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3001ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3002ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3003ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3004ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3005ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3006ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3007ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3008ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3009ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3010ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleOutputPort_3011ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3012ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3013ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3014ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiOutputPort_3015ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3016ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3017ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleOutputPort_3018ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3019ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3020ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiOutputPort_3021ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3022ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3023ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3024ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3025ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3026ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3027ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3028ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3029ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3030ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3031ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3032ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3033ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3034ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3035ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3036ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3037ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3038ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3039ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3040ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3041ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3042ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3043ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3044ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3045ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3046ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3047ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3048ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3049ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3050ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3051ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3052ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3053ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3054ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3055ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3056ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3057ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3058ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3059ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3060ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3061ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3062ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3063ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3064ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3065ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3066ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3067ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3068ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3069ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3070ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3071ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3072ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3073ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3074ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3075ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionCheck_3076ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3077ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3078ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSinglePortMapping_4001ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiPortMapping_4002ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiSinglePortMapping_4003ContainedLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_2001IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_2002IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_2003IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_2004IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_2005IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_2006IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_2007IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3001IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3002IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3003IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3004IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3005IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3006IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3007IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3008IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3009IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3010IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleOutputPort_3011IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3012IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3013IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3014IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiOutputPort_3015IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3016IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3017IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleOutputPort_3018IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3019IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3020IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiOutputPort_3021IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3022IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3023IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3024IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3025IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3026IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3027IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3028IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3029IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3030IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3031IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3032IncomingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3033IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3034IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3035IncomingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer

+				.find(view.eResource().getResourceSet().getResources());

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+				modelElement, crossReferences));

+		result.addAll(getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+				modelElement, crossReferences));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3036IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3037IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3038IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3039IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3040IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3041IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3042IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3043IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3044IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3045IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3046IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3047IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3048IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3049IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3050IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3051IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3052IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3053IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3054IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3055IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3056IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3057IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3058IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3059IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3060IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3061IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3062IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3063IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3064IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3065IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3066IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3067IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3068IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3069IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3070IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3071IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3072IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3073IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3074IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3075IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionCheck_3076IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3077IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3078IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSinglePortMapping_4001IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiPortMapping_4002IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiSinglePortMapping_4003IncomingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_2001OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_2002OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_2003OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_2004OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_2005OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_2006OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_2007OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3001OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3002OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3003OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3004OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3005OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3006OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3007OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3008OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3009OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3010OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleOutputPort_3011OutgoingLinks(

+			View view) {

+		SingleOutputPort modelElement = (SingleOutputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3012OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3013OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3014OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiOutputPort_3015OutgoingLinks(

+			View view) {

+		MultiOutputPort modelElement = (MultiOutputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3016OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3017OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleOutputPort_3018OutgoingLinks(

+			View view) {

+		SingleOutputPort modelElement = (SingleOutputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3019OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3020OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiOutputPort_3021OutgoingLinks(

+			View view) {

+		MultiOutputPort modelElement = (MultiOutputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3022OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3023OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3024OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3025OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3026OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3027OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3028OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3029OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3030OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3031OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiInputPort_3032OutgoingLinks(

+			View view) {

+		MultiInputPort modelElement = (MultiInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(modelElement));

+		result.addAll(getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3033OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3034OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleInputPort_3035OutgoingLinks(

+			View view) {

+		SingleInputPort modelElement = (SingleInputPort) view.getElement();

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		result.addAll(getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(modelElement));

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3036OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3037OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3038OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3039OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3040OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3041OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3042OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3043OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3044OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3045OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3046OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getCartesianQueuedUnit_3047OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getParallelQueuedUnit_3048OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3049OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3050OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3051OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3052OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3053OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3054OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3055OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3056OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3057OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3058OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3059OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3060OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFeatureUnit_3061OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFeatureUnit_3062OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleFilterUnit_3063OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiFilterUnit_3064OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3065OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3066OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSingleQueuedUnit_3067OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3068OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3069OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3070OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3071OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3072OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSequentialUnit_3073OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3074OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionalUnit_3075OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getConditionCheck_3076OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3077OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getAtomicUnit_3078OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getSinglePortMapping_4001OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiPortMapping_4002OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	public static List<ComrelLinkDescriptor> getMultiSinglePortMapping_4003OutgoingLinks(

+			View view) {

+		return Collections.emptyList();

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getContainedTypeModelFacetLinks_SinglePortMapping_4001(

+			CompositeRefactoring container) {

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		for (Iterator<?> links = container.getPortMappings().iterator(); links

+				.hasNext();) {

+			EObject linkObject = (EObject) links.next();

+			if (false == linkObject instanceof SinglePortMapping) {

+				continue;

+			}

+			SinglePortMapping link = (SinglePortMapping) linkObject;

+			if (SinglePortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			SingleInputPort dst = link.getTarget();

+			SinglePort src = link.getSource();

+			result.add(new ComrelLinkDescriptor(src, dst, link,

+					ComrelElementTypes.SinglePortMapping_4001,

+					SinglePortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getContainedTypeModelFacetLinks_MultiPortMapping_4002(

+			CompositeRefactoring container) {

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		for (Iterator<?> links = container.getPortMappings().iterator(); links

+				.hasNext();) {

+			EObject linkObject = (EObject) links.next();

+			if (false == linkObject instanceof MultiPortMapping) {

+				continue;

+			}

+			MultiPortMapping link = (MultiPortMapping) linkObject;

+			if (MultiPortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			MultiInputPort dst = link.getTarget();

+			MultiPort src = link.getSource();

+			result.add(new ComrelLinkDescriptor(src, dst, link,

+					ComrelElementTypes.MultiPortMapping_4002,

+					MultiPortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getContainedTypeModelFacetLinks_MultiSinglePortMapping_4003(

+			CompositeRefactoring container) {

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		for (Iterator<?> links = container.getPortMappings().iterator(); links

+				.hasNext();) {

+			EObject linkObject = (EObject) links.next();

+			if (false == linkObject instanceof MultiSinglePortMapping) {

+				continue;

+			}

+			MultiSinglePortMapping link = (MultiSinglePortMapping) linkObject;

+			if (MultiSinglePortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			SingleInputPort dst = link.getTarget();

+			MultiPort src = link.getSource();

+			result.add(new ComrelLinkDescriptor(src, dst, link,

+					ComrelElementTypes.MultiSinglePortMapping_4003,

+					MultiSinglePortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getIncomingTypeModelFacetLinks_SinglePortMapping_4001(

+			SingleInputPort target,

+			Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences) {

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		Collection<EStructuralFeature.Setting> settings = crossReferences

+				.get(target);

+		for (EStructuralFeature.Setting setting : settings) {

+			if (setting.getEStructuralFeature() != ComrelPackage.eINSTANCE

+					.getSinglePortMapping_Target()

+					|| false == setting.getEObject() instanceof SinglePortMapping) {

+				continue;

+			}

+			SinglePortMapping link = (SinglePortMapping) setting.getEObject();

+			if (SinglePortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			SinglePort src = link.getSource();

+			result.add(new ComrelLinkDescriptor(src, target, link,

+					ComrelElementTypes.SinglePortMapping_4001,

+					SinglePortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getIncomingTypeModelFacetLinks_MultiPortMapping_4002(

+			MultiInputPort target,

+			Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences) {

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		Collection<EStructuralFeature.Setting> settings = crossReferences

+				.get(target);

+		for (EStructuralFeature.Setting setting : settings) {

+			if (setting.getEStructuralFeature() != ComrelPackage.eINSTANCE

+					.getMultiPortMapping_Target()

+					|| false == setting.getEObject() instanceof MultiPortMapping) {

+				continue;

+			}

+			MultiPortMapping link = (MultiPortMapping) setting.getEObject();

+			if (MultiPortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			MultiPort src = link.getSource();

+			result.add(new ComrelLinkDescriptor(src, target, link,

+					ComrelElementTypes.MultiPortMapping_4002,

+					MultiPortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getIncomingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+			SingleInputPort target,

+			Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences) {

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		Collection<EStructuralFeature.Setting> settings = crossReferences

+				.get(target);

+		for (EStructuralFeature.Setting setting : settings) {

+			if (setting.getEStructuralFeature() != ComrelPackage.eINSTANCE

+					.getMultiSinglePortMapping_Target()

+					|| false == setting.getEObject() instanceof MultiSinglePortMapping) {

+				continue;

+			}

+			MultiSinglePortMapping link = (MultiSinglePortMapping) setting

+					.getEObject();

+			if (MultiSinglePortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			MultiPort src = link.getSource();

+			result.add(new ComrelLinkDescriptor(src, target, link,

+					ComrelElementTypes.MultiSinglePortMapping_4003,

+					MultiSinglePortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getOutgoingTypeModelFacetLinks_SinglePortMapping_4001(

+			SinglePort source) {

+		CompositeRefactoring container = null;

+		// Find container element for the link.

+		// Climb up by containment hierarchy starting from the source

+		// and return the first element that is instance of the container class.

+		for (EObject element = source; element != null && container == null; element = element

+				.eContainer()) {

+			if (element instanceof CompositeRefactoring) {

+				container = (CompositeRefactoring) element;

+			}

+		}

+		if (container == null) {

+			return Collections.emptyList();

+		}

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		for (Iterator<?> links = container.getPortMappings().iterator(); links

+				.hasNext();) {

+			EObject linkObject = (EObject) links.next();

+			if (false == linkObject instanceof SinglePortMapping) {

+				continue;

+			}

+			SinglePortMapping link = (SinglePortMapping) linkObject;

+			if (SinglePortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			SingleInputPort dst = link.getTarget();

+			SinglePort src = link.getSource();

+			if (src != source) {

+				continue;

+			}

+			result.add(new ComrelLinkDescriptor(src, dst, link,

+					ComrelElementTypes.SinglePortMapping_4001,

+					SinglePortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getOutgoingTypeModelFacetLinks_MultiPortMapping_4002(

+			MultiPort source) {

+		CompositeRefactoring container = null;

+		// Find container element for the link.

+		// Climb up by containment hierarchy starting from the source

+		// and return the first element that is instance of the container class.

+		for (EObject element = source; element != null && container == null; element = element

+				.eContainer()) {

+			if (element instanceof CompositeRefactoring) {

+				container = (CompositeRefactoring) element;

+			}

+		}

+		if (container == null) {

+			return Collections.emptyList();

+		}

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		for (Iterator<?> links = container.getPortMappings().iterator(); links

+				.hasNext();) {

+			EObject linkObject = (EObject) links.next();

+			if (false == linkObject instanceof MultiPortMapping) {

+				continue;

+			}

+			MultiPortMapping link = (MultiPortMapping) linkObject;

+			if (MultiPortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			MultiInputPort dst = link.getTarget();

+			MultiPort src = link.getSource();

+			if (src != source) {

+				continue;

+			}

+			result.add(new ComrelLinkDescriptor(src, dst, link,

+					ComrelElementTypes.MultiPortMapping_4002,

+					MultiPortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Collection<ComrelLinkDescriptor> getOutgoingTypeModelFacetLinks_MultiSinglePortMapping_4003(

+			MultiPort source) {

+		CompositeRefactoring container = null;

+		// Find container element for the link.

+		// Climb up by containment hierarchy starting from the source

+		// and return the first element that is instance of the container class.

+		for (EObject element = source; element != null && container == null; element = element

+				.eContainer()) {

+			if (element instanceof CompositeRefactoring) {

+				container = (CompositeRefactoring) element;

+			}

+		}

+		if (container == null) {

+			return Collections.emptyList();

+		}

+		LinkedList<ComrelLinkDescriptor> result = new LinkedList<ComrelLinkDescriptor>();

+		for (Iterator<?> links = container.getPortMappings().iterator(); links

+				.hasNext();) {

+			EObject linkObject = (EObject) links.next();

+			if (false == linkObject instanceof MultiSinglePortMapping) {

+				continue;

+			}

+			MultiSinglePortMapping link = (MultiSinglePortMapping) linkObject;

+			if (MultiSinglePortMappingEditPart.VISUAL_ID != ComrelVisualIDRegistry

+					.getLinkWithClassVisualID(link)) {

+				continue;

+			}

+			SingleInputPort dst = link.getTarget();

+			MultiPort src = link.getSource();

+			if (src != source) {

+				continue;

+			}

+			result.add(new ComrelLinkDescriptor(src, dst, link,

+					ComrelElementTypes.MultiSinglePortMapping_4003,

+					MultiSinglePortMappingEditPart.VISUAL_ID));

+		}

+		return result;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDocumentProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDocumentProvider.java
new file mode 100644
index 0000000..20739d2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelDocumentProvider.java
@@ -0,0 +1,1132 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.resources.IResourceStatus;

+import org.eclipse.core.resources.IStorage;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.core.runtime.Status;

+import org.eclipse.core.runtime.jobs.ISchedulingRule;

+import org.eclipse.core.runtime.jobs.MultiRule;

+import org.eclipse.emf.common.notify.Adapter;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.Notifier;

+import org.eclipse.emf.common.ui.URIEditorInput;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.ecore.util.EContentAdapter;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.transaction.NotificationFilter;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.diagram.core.DiagramEditingDomainFactory;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.AbstractDocumentProvider;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramDocument;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocumentProvider;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.EditorStatusCodes;

+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.util.DiagramIOUtil;

+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.operation.IRunnableContext;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.swt.widgets.Display;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.part.FileEditorInput;

+

+/**

+ * @generated

+ */

+public class ComrelDocumentProvider extends AbstractDocumentProvider implements

+		IDiagramDocumentProvider {

+

+	/**

+	 * @generated

+	 */

+	protected ElementInfo createElementInfo(Object element)

+			throws CoreException {

+		if (false == element instanceof FileEditorInput

+				&& false == element instanceof URIEditorInput) {

+			throw new CoreException(

+					new Status(

+							IStatus.ERROR,

+							ComrelDiagramEditorPlugin.ID,

+							0,

+							NLS.bind(

+									Messages.ComrelDocumentProvider_IncorrectInputError,

+									new Object[] {

+											element,

+											"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 

+							null));

+		}

+		IEditorInput editorInput = (IEditorInput) element;

+		IDiagramDocument document = (IDiagramDocument) createDocument(editorInput);

+

+		ResourceSetInfo info = new ResourceSetInfo(document, editorInput);

+		info.setModificationStamp(computeModificationStamp(info));

+		info.fStatus = null;

+		return info;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IDocument createDocument(Object element) throws CoreException {

+		if (false == element instanceof FileEditorInput

+				&& false == element instanceof URIEditorInput) {

+			throw new CoreException(

+					new Status(

+							IStatus.ERROR,

+							ComrelDiagramEditorPlugin.ID,

+							0,

+							NLS.bind(

+									Messages.ComrelDocumentProvider_IncorrectInputError,

+									new Object[] {

+											element,

+											"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 

+							null));

+		}

+		IDocument document = createEmptyDocument();

+		setDocumentContent(document, (IEditorInput) element);

+		setupDocument(element, document);

+		return document;

+	}

+

+	/**

+	 * Sets up the given document as it would be provided for the given element. The

+	 * content of the document is not changed. This default implementation is empty.

+	 * Subclasses may reimplement.

+	 * 

+	 * @param element the blue-print element

+	 * @param document the document to set up

+	 * @generated

+	 */

+	protected void setupDocument(Object element, IDocument document) {

+		// for subclasses

+	}

+

+	/**

+	 * @generated

+	 */

+	private long computeModificationStamp(ResourceSetInfo info) {

+		int result = 0;

+		for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+				.hasNext();) {

+			Resource nextResource = it.next();

+			IFile file = WorkspaceSynchronizer.getFile(nextResource);

+			if (file != null) {

+				if (file.getLocation() != null) {

+					result += file.getLocation().toFile().lastModified();

+				} else {

+					result += file.getModificationStamp();

+				}

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IDocument createEmptyDocument() {

+		DiagramDocument document = new DiagramDocument();

+		document.setEditingDomain(createEditingDomain());

+		return document;

+	}

+

+	/**

+	 * @generated

+	 */

+	private TransactionalEditingDomain createEditingDomain() {

+		TransactionalEditingDomain editingDomain = DiagramEditingDomainFactory

+				.getInstance().createEditingDomain();

+		editingDomain.setID("comrel.diagram.EditingDomain"); //$NON-NLS-1$

+		final NotificationFilter diagramResourceModifiedFilter = NotificationFilter

+				.createNotifierFilter(editingDomain.getResourceSet())

+				.and(NotificationFilter.createEventTypeFilter(Notification.ADD))

+				.and(NotificationFilter.createFeatureFilter(ResourceSet.class,

+						ResourceSet.RESOURCE_SET__RESOURCES));

+		editingDomain.getResourceSet().eAdapters().add(new Adapter() {

+

+			private Notifier myTarger;

+

+			public Notifier getTarget() {

+				return myTarger;

+			}

+

+			public boolean isAdapterForType(Object type) {

+				return false;

+			}

+

+			public void notifyChanged(Notification notification) {

+				if (diagramResourceModifiedFilter.matches(notification)) {

+					Object value = notification.getNewValue();

+					if (value instanceof Resource) {

+						((Resource) value).setTrackingModification(true);

+					}

+				}

+			}

+

+			public void setTarget(Notifier newTarget) {

+				myTarger = newTarget;

+			}

+

+		});

+

+		return editingDomain;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setDocumentContent(IDocument document, IEditorInput element)

+			throws CoreException {

+		IDiagramDocument diagramDocument = (IDiagramDocument) document;

+		TransactionalEditingDomain domain = diagramDocument.getEditingDomain();

+		if (element instanceof FileEditorInput) {

+			IStorage storage = ((FileEditorInput) element).getStorage();

+			Diagram diagram = DiagramIOUtil.load(domain, storage, true,

+					getProgressMonitor());

+			document.setContent(diagram);

+		} else if (element instanceof URIEditorInput) {

+			URI uri = ((URIEditorInput) element).getURI();

+			Resource resource = null;

+			try {

+				resource = domain.getResourceSet().getResource(

+						uri.trimFragment(), false);

+				if (resource == null) {

+					resource = domain.getResourceSet().createResource(

+							uri.trimFragment());

+				}

+				if (!resource.isLoaded()) {

+					try {

+						Map options = new HashMap(

+								GMFResourceFactory.getDefaultLoadOptions());

+						// @see 171060 

+						// options.put(org.eclipse.emf.ecore.xmi.XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);

+						resource.load(options);

+					} catch (IOException e) {

+						resource.unload();

+						throw e;

+					}

+				}

+				if (uri.fragment() != null) {

+					EObject rootElement = resource.getEObject(uri.fragment());

+					if (rootElement instanceof Diagram) {

+						document.setContent((Diagram) rootElement);

+						return;

+					}

+				} else {

+					for (Iterator it = resource.getContents().iterator(); it

+							.hasNext();) {

+						Object rootElement = it.next();

+						if (rootElement instanceof Diagram) {

+							document.setContent((Diagram) rootElement);

+							return;

+						}

+					}

+				}

+				throw new RuntimeException(

+						Messages.ComrelDocumentProvider_NoDiagramInResourceError);

+			} catch (Exception e) {

+				CoreException thrownExcp = null;

+				if (e instanceof CoreException) {

+					thrownExcp = (CoreException) e;

+				} else {

+					String msg = e.getLocalizedMessage();

+					thrownExcp = new CoreException(

+							new Status(

+									IStatus.ERROR,

+									ComrelDiagramEditorPlugin.ID,

+									0,

+									msg != null ? msg

+											: Messages.ComrelDocumentProvider_DiagramLoadingError,

+									e));

+				}

+				throw thrownExcp;

+			}

+		} else {

+			throw new CoreException(

+					new Status(

+							IStatus.ERROR,

+							ComrelDiagramEditorPlugin.ID,

+							0,

+							NLS.bind(

+									Messages.ComrelDocumentProvider_IncorrectInputError,

+									new Object[] {

+											element,

+											"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 

+							null));

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public long getModificationStamp(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			return computeModificationStamp(info);

+		}

+		return super.getModificationStamp(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isDeleted(Object element) {

+		IDiagramDocument document = getDiagramDocument(element);

+		if (document != null) {

+			Resource diagramResource = document.getDiagram().eResource();

+			if (diagramResource != null) {

+				IFile file = WorkspaceSynchronizer.getFile(diagramResource);

+				return file == null || file.getLocation() == null

+						|| !file.getLocation().toFile().exists();

+			}

+		}

+		return super.isDeleted(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public ResourceSetInfo getResourceSetInfo(Object editorInput) {

+		return (ResourceSetInfo) super.getElementInfo(editorInput);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void disposeElementInfo(Object element, ElementInfo info) {

+		if (info instanceof ResourceSetInfo) {

+			ResourceSetInfo resourceSetInfo = (ResourceSetInfo) info;

+			resourceSetInfo.dispose();

+		}

+		super.disposeElementInfo(element, info);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doValidateState(Object element, Object computationContext)

+			throws CoreException {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			LinkedList<IFile> files2Validate = new LinkedList<IFile>();

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				IFile file = WorkspaceSynchronizer.getFile(nextResource);

+				if (file != null && file.isReadOnly()) {

+					files2Validate.add(file);

+				}

+			}

+			ResourcesPlugin.getWorkspace().validateEdit(

+					(IFile[]) files2Validate.toArray(new IFile[files2Validate

+							.size()]), computationContext);

+		}

+

+		super.doValidateState(element, computationContext);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isReadOnly(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			if (info.isUpdateCache()) {

+				try {

+					updateCache(element);

+				} catch (CoreException ex) {

+					ComrelDiagramEditorPlugin.getInstance().logError(

+							Messages.ComrelDocumentProvider_isModifiable, ex);

+					// Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.StorageDocumentProvider_isModifiable

+				}

+			}

+			return info.isReadOnly();

+		}

+		return super.isReadOnly(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isModifiable(Object element) {

+		if (!isStateValidated(element)) {

+			if (element instanceof FileEditorInput

+					|| element instanceof URIEditorInput) {

+				return true;

+			}

+		}

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			if (info.isUpdateCache()) {

+				try {

+					updateCache(element);

+				} catch (CoreException ex) {

+					ComrelDiagramEditorPlugin.getInstance().logError(

+							Messages.ComrelDocumentProvider_isModifiable, ex);

+					// Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.StorageDocumentProvider_isModifiable

+				}

+			}

+			return info.isModifiable();

+		}

+		return super.isModifiable(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void updateCache(Object element) throws CoreException {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				IFile file = WorkspaceSynchronizer.getFile(nextResource);

+				if (file != null && file.isReadOnly()) {

+					info.setReadOnly(true);

+					info.setModifiable(false);

+					return;

+				}

+			}

+			info.setReadOnly(false);

+			info.setModifiable(true);

+			return;

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doUpdateStateCache(Object element) throws CoreException {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			info.setUpdateCache(true);

+		}

+		super.doUpdateStateCache(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean isSynchronized(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			return info.isSynchronized();

+		}

+		return super.isSynchronized(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ISchedulingRule getResetRule(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			LinkedList<ISchedulingRule> rules = new LinkedList<ISchedulingRule>();

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				IFile file = WorkspaceSynchronizer.getFile(nextResource);

+				if (file != null) {

+					rules.add(ResourcesPlugin.getWorkspace().getRuleFactory()

+							.modifyRule(file));

+				}

+			}

+			return new MultiRule(

+					(ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules

+							.size()]));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ISchedulingRule getSaveRule(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			LinkedList<ISchedulingRule> rules = new LinkedList<ISchedulingRule>();

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				IFile file = WorkspaceSynchronizer.getFile(nextResource);

+				if (file != null) {

+					rules.add(computeSchedulingRule(file));

+				}

+			}

+			return new MultiRule(

+					(ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules

+							.size()]));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ISchedulingRule getSynchronizeRule(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			LinkedList<ISchedulingRule> rules = new LinkedList<ISchedulingRule>();

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				IFile file = WorkspaceSynchronizer.getFile(nextResource);

+				if (file != null) {

+					rules.add(ResourcesPlugin.getWorkspace().getRuleFactory()

+							.refreshRule(file));

+				}

+			}

+			return new MultiRule(

+					(ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules

+							.size()]));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected ISchedulingRule getValidateStateRule(Object element) {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			LinkedList<ISchedulingRule> files = new LinkedList<ISchedulingRule>();

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				IFile file = WorkspaceSynchronizer.getFile(nextResource);

+				if (file != null) {

+					files.add(file);

+				}

+			}

+			return ResourcesPlugin

+					.getWorkspace()

+					.getRuleFactory()

+					.validateEditRule(

+							(IFile[]) files.toArray(new IFile[files.size()]));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ISchedulingRule computeSchedulingRule(IResource toCreateOrModify) {

+		if (toCreateOrModify.exists())

+			return ResourcesPlugin.getWorkspace().getRuleFactory()

+					.modifyRule(toCreateOrModify);

+

+		IResource parent = toCreateOrModify;

+		do {

+			/*

+			 * XXX This is a workaround for

+			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=67601

+			 * IResourceRuleFactory.createRule should iterate the hierarchy

+			 * itself.

+			 */

+			toCreateOrModify = parent;

+			parent = toCreateOrModify.getParent();

+		} while (parent != null && !parent.exists());

+

+		return ResourcesPlugin.getWorkspace().getRuleFactory()

+				.createRule(toCreateOrModify);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void doSynchronize(Object element, IProgressMonitor monitor)

+			throws CoreException {

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource nextResource = it.next();

+				handleElementChanged(info, nextResource, monitor);

+			}

+			return;

+		}

+		super.doSynchronize(element, monitor);

+	}

+

+	/**

+	 * @generated NOT

+	 */

+	protected void doSaveDocument(IProgressMonitor monitor, Object element,

+			IDocument document, boolean overwrite) throws CoreException {

+		ValidateAction.runValidation((View) document.getContent());

+

+		ResourceSetInfo info = getResourceSetInfo(element);

+		if (info != null) {

+			if (!overwrite && !info.isSynchronized()) {

+				throw new CoreException(

+						new Status(

+								IStatus.ERROR,

+								ComrelDiagramEditorPlugin.ID,

+								IResourceStatus.OUT_OF_SYNC_LOCAL,

+								Messages.ComrelDocumentProvider_UnsynchronizedFileSaveError,

+								null));

+			}

+			info.stopResourceListening();

+			fireElementStateChanging(element);

+			try {

+				monitor.beginTask(

+						Messages.ComrelDocumentProvider_SaveDiagramTask, info

+								.getResourceSet().getResources().size() + 1); //"Saving diagram"

+				for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it

+						.hasNext();) {

+					Resource nextResource = it.next();

+					monitor.setTaskName(NLS

+							.bind(Messages.ComrelDocumentProvider_SaveNextResourceTask,

+									nextResource.getURI()));

+					if (nextResource.isLoaded()

+							&& !info.getEditingDomain()

+									.isReadOnly(nextResource)) {

+						try {

+							nextResource.save(ComrelDiagramEditorUtil

+									.getSaveOptions());

+						} catch (IOException e) {

+							fireElementStateChangeFailed(element);

+							throw new CoreException(new Status(IStatus.ERROR,

+									ComrelDiagramEditorPlugin.ID,

+									EditorStatusCodes.RESOURCE_FAILURE,

+									e.getLocalizedMessage(), null));

+						}

+					}

+					monitor.worked(1);

+				}

+				monitor.done();

+				info.setModificationStamp(computeModificationStamp(info));

+			} catch (RuntimeException x) {

+				fireElementStateChangeFailed(element);

+				throw x;

+			} finally {

+				info.startResourceListening();

+			}

+		} else {

+			URI newResoruceURI;

+			List<IFile> affectedFiles = null;

+			if (element instanceof FileEditorInput) {

+				IFile newFile = ((FileEditorInput) element).getFile();

+				affectedFiles = Collections.singletonList(newFile);

+				newResoruceURI = URI.createPlatformResourceURI(newFile

+						.getFullPath().toString(), true);

+			} else if (element instanceof URIEditorInput) {

+				newResoruceURI = ((URIEditorInput) element).getURI();

+			} else {

+				fireElementStateChangeFailed(element);

+				throw new CoreException(

+						new Status(

+								IStatus.ERROR,

+								ComrelDiagramEditorPlugin.ID,

+								0,

+								NLS.bind(

+										Messages.ComrelDocumentProvider_IncorrectInputError,

+										new Object[] {

+												element,

+												"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 

+								null));

+			}

+			if (false == document instanceof IDiagramDocument) {

+				fireElementStateChangeFailed(element);

+				throw new CoreException(

+						new Status(

+								IStatus.ERROR,

+								ComrelDiagramEditorPlugin.ID,

+								0,

+								"Incorrect document used: " + document + " instead of org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument", null)); //$NON-NLS-1$ //$NON-NLS-2$

+			}

+			IDiagramDocument diagramDocument = (IDiagramDocument) document;

+			final Resource newResource = diagramDocument.getEditingDomain()

+					.getResourceSet().createResource(newResoruceURI);

+			final Diagram diagramCopy = (Diagram) EcoreUtil

+					.copy(diagramDocument.getDiagram());

+			try {

+				new AbstractTransactionalCommand(

+						diagramDocument.getEditingDomain(),

+						NLS.bind(

+								Messages.ComrelDocumentProvider_SaveAsOperation,

+								diagramCopy.getName()), affectedFiles) {

+					protected CommandResult doExecuteWithResult(

+							IProgressMonitor monitor, IAdaptable info)

+							throws ExecutionException {

+						newResource.getContents().add(diagramCopy);

+						return CommandResult.newOKCommandResult();

+					}

+				}.execute(monitor, null);

+				newResource.save(ComrelDiagramEditorUtil.getSaveOptions());

+			} catch (ExecutionException e) {

+				fireElementStateChangeFailed(element);

+				throw new CoreException(new Status(IStatus.ERROR,

+						ComrelDiagramEditorPlugin.ID, 0,

+						e.getLocalizedMessage(), null));

+			} catch (IOException e) {

+				fireElementStateChangeFailed(element);

+				throw new CoreException(new Status(IStatus.ERROR,

+						ComrelDiagramEditorPlugin.ID, 0,

+						e.getLocalizedMessage(), null));

+			}

+			newResource.unload();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleElementChanged(ResourceSetInfo info,

+			Resource changedResource, IProgressMonitor monitor) {

+		IFile file = WorkspaceSynchronizer.getFile(changedResource);

+		if (file != null) {

+			try {

+				file.refreshLocal(IResource.DEPTH_INFINITE, monitor);

+			} catch (CoreException ex) {

+				ComrelDiagramEditorPlugin

+						.getInstance()

+						.logError(

+								Messages.ComrelDocumentProvider_handleElementContentChanged,

+								ex);

+				// Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.FileDocumentProvider_handleElementContentChanged

+			}

+		}

+		changedResource.unload();

+

+		fireElementContentAboutToBeReplaced(info.getEditorInput());

+		removeUnchangedElementListeners(info.getEditorInput(), info);

+		info.fStatus = null;

+		try {

+			setDocumentContent(info.fDocument, info.getEditorInput());

+		} catch (CoreException e) {

+			info.fStatus = e.getStatus();

+		}

+		if (!info.fCanBeSaved) {

+			info.setModificationStamp(computeModificationStamp(info));

+		}

+		addUnchangedElementListeners(info.getEditorInput(), info);

+		fireElementContentReplaced(info.getEditorInput());

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void handleElementMoved(IEditorInput input, URI uri) {

+		if (input instanceof FileEditorInput) {

+			IFile newFile = ResourcesPlugin

+					.getWorkspace()

+					.getRoot()

+					.getFile(

+							new Path(URI.decode(uri.path()))

+									.removeFirstSegments(1));

+			fireElementMoved(input, newFile == null ? null

+					: new FileEditorInput(newFile));

+			return;

+		}

+		// TODO: append suffix to the URI! (use diagram as a parameter)

+		fireElementMoved(input, new URIEditorInput(uri));

+	}

+

+	/**

+	 * @generated

+	 */

+	public IEditorInput createInputWithEditingDomain(IEditorInput editorInput,

+			TransactionalEditingDomain domain) {

+		return editorInput;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IDiagramDocument getDiagramDocument(Object element) {

+		IDocument doc = getDocument(element);

+		if (doc instanceof IDiagramDocument) {

+			return (IDiagramDocument) doc;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IRunnableContext getOperationRunner(IProgressMonitor monitor) {

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected class ResourceSetInfo extends ElementInfo {

+

+		/**

+		 * @generated

+		 */

+		private long myModificationStamp = IResource.NULL_STAMP;

+

+		/**

+		 * @generated

+		 */

+		private WorkspaceSynchronizer mySynchronizer;

+

+		/**

+		 * @generated

+		 */

+		private LinkedList<Resource> myUnSynchronizedResources = new LinkedList<Resource>();

+

+		/**

+		 * @generated

+		 */

+		private IDiagramDocument myDocument;

+

+		/**

+		 * @generated

+		 */

+		private IEditorInput myEditorInput;

+

+		/**

+		 * @generated

+		 */

+		private boolean myUpdateCache = true;

+

+		/**

+		 * @generated

+		 */

+		private boolean myModifiable = false;

+

+		/**

+		 * @generated

+		 */

+		private boolean myReadOnly = true;

+

+		/**

+		 * @generated

+		 */

+		private ResourceSetModificationListener myResourceSetListener;

+

+		/**

+		 * @generated

+		 */

+		public ResourceSetInfo(IDiagramDocument document,

+				IEditorInput editorInput) {

+			super(document);

+			myDocument = document;

+			myEditorInput = editorInput;

+			startResourceListening();

+			myResourceSetListener = new ResourceSetModificationListener(this);

+			getResourceSet().eAdapters().add(myResourceSetListener);

+		}

+

+		/**

+		 * @generated

+		 */

+		public long getModificationStamp() {

+			return myModificationStamp;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void setModificationStamp(long modificationStamp) {

+			myModificationStamp = modificationStamp;

+		}

+

+		/**

+		 * @generated

+		 */

+		public TransactionalEditingDomain getEditingDomain() {

+			return myDocument.getEditingDomain();

+		}

+

+		/**

+		 * @generated

+		 */

+		public ResourceSet getResourceSet() {

+			return getEditingDomain().getResourceSet();

+		}

+

+		/**

+		 * @generated

+		 */

+		public Iterator<Resource> getLoadedResourcesIterator() {

+			return new ArrayList<Resource>(getResourceSet().getResources())

+					.iterator();

+		}

+

+		/**

+		 * @generated

+		 */

+		public IEditorInput getEditorInput() {

+			return myEditorInput;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void dispose() {

+			stopResourceListening();

+			getResourceSet().eAdapters().remove(myResourceSetListener);

+			for (Iterator<Resource> it = getLoadedResourcesIterator(); it

+					.hasNext();) {

+				Resource resource = it.next();

+				resource.unload();

+			}

+			getEditingDomain().dispose();

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean isSynchronized() {

+			return myUnSynchronizedResources.size() == 0;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void setUnSynchronized(Resource resource) {

+			myUnSynchronizedResources.add(resource);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void setSynchronized(Resource resource) {

+			myUnSynchronizedResources.remove(resource);

+		}

+

+		/**

+		 * @generated

+		 */

+		public final void stopResourceListening() {

+			mySynchronizer.dispose();

+			mySynchronizer = null;

+		}

+

+		/**

+		 * @generated

+		 */

+		public final void startResourceListening() {

+			mySynchronizer = new WorkspaceSynchronizer(getEditingDomain(),

+					new SynchronizerDelegate());

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean isUpdateCache() {

+			return myUpdateCache;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void setUpdateCache(boolean update) {

+			myUpdateCache = update;

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean isModifiable() {

+			return myModifiable;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void setModifiable(boolean modifiable) {

+			myModifiable = modifiable;

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean isReadOnly() {

+			return myReadOnly;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void setReadOnly(boolean readOnly) {

+			myReadOnly = readOnly;

+		}

+

+		/**

+		 * @generated

+		 */

+		private class SynchronizerDelegate implements

+				WorkspaceSynchronizer.Delegate {

+

+			/**

+			 * @generated

+			 */

+			public void dispose() {

+			}

+

+			/**

+			 * @generated

+			 */

+			public boolean handleResourceChanged(final Resource resource) {

+				synchronized (ResourceSetInfo.this) {

+					if (ResourceSetInfo.this.fCanBeSaved) {

+						ResourceSetInfo.this.setUnSynchronized(resource);

+						return true;

+					}

+				}

+				Display.getDefault().asyncExec(new Runnable() {

+					public void run() {

+						handleElementChanged(ResourceSetInfo.this, resource,

+								null);

+					}

+				});

+				return true;

+			}

+

+			/**

+			 * @generated

+			 */

+			public boolean handleResourceDeleted(Resource resource) {

+				synchronized (ResourceSetInfo.this) {

+					if (ResourceSetInfo.this.fCanBeSaved) {

+						ResourceSetInfo.this.setUnSynchronized(resource);

+						return true;

+					}

+				}

+				Display.getDefault().asyncExec(new Runnable() {

+					public void run() {

+						fireElementDeleted(ResourceSetInfo.this

+								.getEditorInput());

+					}

+				});

+				return true;

+			}

+

+			/**

+			 * @generated

+			 */

+			public boolean handleResourceMoved(Resource resource,

+					final URI newURI) {

+				synchronized (ResourceSetInfo.this) {

+					if (ResourceSetInfo.this.fCanBeSaved) {

+						ResourceSetInfo.this.setUnSynchronized(resource);

+						return true;

+					}

+				}

+				if (myDocument.getDiagram().eResource() == resource) {

+					Display.getDefault().asyncExec(new Runnable() {

+						public void run() {

+							handleElementMoved(

+									ResourceSetInfo.this.getEditorInput(),

+									newURI);

+						}

+					});

+				} else {

+					handleResourceDeleted(resource);

+				}

+				return true;

+			}

+

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	private class ResourceSetModificationListener extends EContentAdapter {

+

+		/**

+		 * @generated

+		 */

+		private NotificationFilter myModifiedFilter;

+

+		/**

+		 * @generated

+		 */

+		private ResourceSetInfo myInfo;

+

+		/**

+		 * @generated

+		 */

+		public ResourceSetModificationListener(ResourceSetInfo info) {

+			myInfo = info;

+			myModifiedFilter = NotificationFilter

+					.createEventTypeFilter(Notification.SET)

+					.or(NotificationFilter

+							.createEventTypeFilter(Notification.UNSET))

+					.and(NotificationFilter.createFeatureFilter(Resource.class,

+							Resource.RESOURCE__IS_MODIFIED));

+		}

+

+		/**

+		 * @generated

+		 */

+		public void notifyChanged(Notification notification) {

+			if (notification.getNotifier() instanceof ResourceSet) {

+				super.notifyChanged(notification);

+			}

+			if (!notification.isTouch()

+					&& myModifiedFilter.matches(notification)) {

+				if (notification.getNotifier() instanceof Resource) {

+					Resource resource = (Resource) notification.getNotifier();

+					if (resource.isLoaded()) {

+						boolean modified = false;

+						for (Iterator/*<org.eclipse.emf.ecore.resource.Resource>*/it = myInfo

+								.getLoadedResourcesIterator(); it.hasNext()

+								&& !modified;) {

+							Resource nextResource = (Resource) it.next();

+							if (nextResource.isLoaded()) {

+								modified = nextResource.isModified();

+							}

+						}

+						boolean dirtyStateChanged = false;

+						synchronized (myInfo) {

+							if (modified != myInfo.fCanBeSaved) {

+								myInfo.fCanBeSaved = modified;

+								dirtyStateChanged = true;

+							}

+							if (!resource.isModified()) {

+								myInfo.setSynchronized(resource);

+							}

+						}

+						if (dirtyStateChanged) {

+							fireElementDirtyStateChanged(

+									myInfo.getEditorInput(), modified);

+

+							if (!modified) {

+								myInfo.setModificationStamp(computeModificationStamp(myInfo));

+							}

+						}

+					}

+				}

+			}

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelElementChooserDialog.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelElementChooserDialog.java
new file mode 100644
index 0000000..98ee37c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelElementChooserDialog.java
@@ -0,0 +1,403 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.Collections;

+

+import org.eclipse.core.resources.IContainer;

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.common.util.WrappedException;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.ecore.util.FeatureMap;

+import org.eclipse.emf.edit.provider.IWrapperItemProvider;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gmf.runtime.diagram.core.services.ViewService;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.dialogs.Dialog;

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.jface.viewers.ILabelProvider;

+import org.eclipse.jface.viewers.ILabelProviderListener;

+import org.eclipse.jface.viewers.ISelectionChangedListener;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.ITreeContentProvider;

+import org.eclipse.jface.viewers.SelectionChangedEvent;

+import org.eclipse.jface.viewers.TreeViewer;

+import org.eclipse.jface.viewers.Viewer;

+import org.eclipse.jface.viewers.ViewerFilter;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Control;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.model.WorkbenchContentProvider;

+import org.eclipse.ui.model.WorkbenchLabelProvider;

+

+/**

+ * @generated

+ */

+public class ComrelElementChooserDialog extends Dialog {

+

+	/**

+	 * @generated

+	 */

+	private TreeViewer myTreeViewer;

+

+	/**

+	 * @generated

+	 */

+	private URI mySelectedModelElementURI;

+

+	/**

+	 * @generated

+	 */

+	private View myView;

+

+	/**

+	 * @generated

+	 */

+	private TransactionalEditingDomain myEditingDomain = GMFEditingDomainFactory.INSTANCE

+			.createEditingDomain();

+

+	/**

+	 * @generated

+	 */

+	public ComrelElementChooserDialog(Shell parentShell, View view) {

+		super(parentShell);

+		setShellStyle(getShellStyle() | SWT.RESIZE);

+		myView = view;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Control createDialogArea(Composite parent) {

+		Composite composite = (Composite) super.createDialogArea(parent);

+		getShell().setText(

+				Messages.ComrelElementChooserDialog_SelectModelElementTitle);

+		createModelBrowser(composite);

+		return composite;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Control createButtonBar(Composite parent) {

+		Control buttonBar = super.createButtonBar(parent);

+		setOkButtonEnabled(false);

+		return buttonBar;

+	}

+

+	/**

+	 * @generated

+	 */

+	private void createModelBrowser(Composite composite) {

+		myTreeViewer = new TreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL

+				| SWT.V_SCROLL | SWT.BORDER);

+		GridData layoutData = new GridData(GridData.FILL_BOTH);

+		layoutData.heightHint = 300;

+		layoutData.widthHint = 300;

+		myTreeViewer.getTree().setLayoutData(layoutData);

+		myTreeViewer.setContentProvider(new ModelElementsTreeContentProvider());

+		myTreeViewer.setLabelProvider(new ModelElementsTreeLabelProvider());

+		myTreeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());

+		myTreeViewer.addFilter(new ModelFilesFilter());

+		myTreeViewer.addSelectionChangedListener(new OkButtonEnabler());

+	}

+

+	/**

+	 * @generated

+	 */

+	private void setOkButtonEnabled(boolean enabled) {

+		getButton(IDialogConstants.OK_ID).setEnabled(enabled);

+	}

+

+	/**

+	 * @generated

+	 */

+	private boolean isValidModelFile(IFile file) {

+		String fileExtension = file.getFullPath().getFileExtension();

+		return "comrel".equals(fileExtension); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	public URI getSelectedModelElementURI() {

+		return mySelectedModelElementURI;

+	}

+

+	/**

+	 * @generated

+	 */

+	public int open() {

+		int result = super.open();

+		for (Resource resource : myEditingDomain.getResourceSet()

+				.getResources()) {

+			resource.unload();

+		}

+		myEditingDomain.dispose();

+		return result;

+	}

+

+	/**

+	 * @generated

+	 */

+	private class ModelElementsTreeContentProvider implements

+			ITreeContentProvider {

+

+		/**

+		 * @generated

+		 */

+		private ITreeContentProvider myWorkbenchContentProvider = new WorkbenchContentProvider();

+

+		/**

+		 * @generated

+		 */

+		private AdapterFactoryContentProvider myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(

+				ComrelDiagramEditorPlugin.getInstance()

+						.getItemProvidersAdapterFactory());

+

+		/**

+		 * @generated

+		 */

+		public Object[] getChildren(Object parentElement) {

+			Object[] result = myWorkbenchContentProvider

+					.getChildren(parentElement);

+			if (result != null && result.length > 0) {

+				return result;

+			}

+			if (parentElement instanceof IFile) {

+				IFile modelFile = (IFile) parentElement;

+				IPath resourcePath = modelFile.getFullPath();

+				ResourceSet resourceSet = myEditingDomain.getResourceSet();

+				try {

+					Resource modelResource = resourceSet.getResource(

+							URI.createPlatformResourceURI(

+									resourcePath.toString(), true), true);

+					return myAdapterFctoryContentProvier

+							.getChildren(modelResource);

+				} catch (WrappedException e) {

+					ComrelDiagramEditorPlugin

+							.getInstance()

+							.logError(

+									"Unable to load resource: " + resourcePath.toString(), e); //$NON-NLS-1$

+				}

+				return Collections.EMPTY_LIST.toArray();

+			}

+			return myAdapterFctoryContentProvier.getChildren(parentElement);

+		}

+

+		/**

+		 * @generated

+		 */

+		public Object getParent(Object element) {

+			Object parent = myWorkbenchContentProvider.getParent(element);

+			if (parent != null) {

+				return parent;

+			}

+			if (element instanceof EObject) {

+				EObject eObject = (EObject) element;

+				if (eObject.eContainer() == null

+						&& eObject.eResource().getURI().isFile()) {

+					String path = eObject.eResource().getURI().path();

+					return ResourcesPlugin.getWorkspace().getRoot()

+							.getFileForLocation(new Path(path));

+				}

+				return myAdapterFctoryContentProvier.getParent(eObject);

+			}

+			return null;

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean hasChildren(Object element) {

+			if (element instanceof IFile) {

+				return isValidModelFile((IFile) element);

+			}

+			return myWorkbenchContentProvider.hasChildren(element)

+					|| myAdapterFctoryContentProvier.hasChildren(element);

+		}

+

+		/**

+		 * @generated

+		 */

+		public Object[] getElements(Object inputElement) {

+			Object[] elements = myWorkbenchContentProvider

+					.getElements(inputElement);

+			return elements;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void dispose() {

+			myWorkbenchContentProvider.dispose();

+			myAdapterFctoryContentProvier.dispose();

+		}

+

+		/**

+		 * @generated

+		 */

+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

+			myWorkbenchContentProvider.inputChanged(viewer, oldInput, newInput);

+			myAdapterFctoryContentProvier.inputChanged(viewer, oldInput,

+					newInput);

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	private class ModelElementsTreeLabelProvider implements ILabelProvider {

+

+		/**

+		 * @generated

+		 */

+		private WorkbenchLabelProvider myWorkbenchLabelProvider = new WorkbenchLabelProvider();

+

+		/**

+		 * @generated

+		 */

+		private AdapterFactoryLabelProvider myAdapterFactoryLabelProvider = new AdapterFactoryLabelProvider(

+				ComrelDiagramEditorPlugin.getInstance()

+						.getItemProvidersAdapterFactory());

+

+		/**

+		 * @generated

+		 */

+		public Image getImage(Object element) {

+			Image result = myWorkbenchLabelProvider.getImage(element);

+			return result != null ? result : myAdapterFactoryLabelProvider

+					.getImage(element);

+		}

+

+		/**

+		 * @generated

+		 */

+		public String getText(Object element) {

+			String result = myWorkbenchLabelProvider.getText(element);

+			return result != null && result.length() > 0 ? result

+					: myAdapterFactoryLabelProvider.getText(element);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void addListener(ILabelProviderListener listener) {

+			myWorkbenchLabelProvider.addListener(listener);

+			myAdapterFactoryLabelProvider.addListener(listener);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void dispose() {

+			myWorkbenchLabelProvider.dispose();

+			myAdapterFactoryLabelProvider.dispose();

+		}

+

+		/**

+		 * @generated

+		 */

+		public boolean isLabelProperty(Object element, String property) {

+			return myWorkbenchLabelProvider.isLabelProperty(element, property)

+					|| myAdapterFactoryLabelProvider.isLabelProperty(element,

+							property);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void removeListener(ILabelProviderListener listener) {

+			myWorkbenchLabelProvider.removeListener(listener);

+			myAdapterFactoryLabelProvider.removeListener(listener);

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	private class ModelFilesFilter extends ViewerFilter {

+

+		/**

+		 * @generated

+		 */

+		public boolean select(Viewer viewer, Object parentElement,

+				Object element) {

+			if (element instanceof IContainer) {

+				return true;

+			}

+			if (element instanceof IFile) {

+				IFile file = (IFile) element;

+				return isValidModelFile(file);

+			}

+			return true;

+		}

+

+	}

+

+	/**

+	 * @generated

+	 */

+	private class OkButtonEnabler implements ISelectionChangedListener {

+

+		/**

+		 * @generated

+		 */

+		public void selectionChanged(SelectionChangedEvent event) {

+			if (event.getSelection() instanceof IStructuredSelection) {

+				IStructuredSelection selection = (IStructuredSelection) event

+						.getSelection();

+				if (selection.size() == 1) {

+					Object selectedElement = selection.getFirstElement();

+					if (selectedElement instanceof IWrapperItemProvider) {

+						selectedElement = ((IWrapperItemProvider) selectedElement)

+								.getValue();

+					}

+					if (selectedElement instanceof FeatureMap.Entry) {

+						selectedElement = ((FeatureMap.Entry) selectedElement)

+								.getValue();

+					}

+					if (selectedElement instanceof EObject) {

+						EObject selectedModelElement = (EObject) selectedElement;

+						setOkButtonEnabled(ViewService

+								.getInstance()

+								.provides(

+										Node.class,

+										new EObjectAdapter(selectedModelElement),

+										myView,

+										null,

+										ViewUtil.APPEND,

+										true,

+										ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));

+						mySelectedModelElementURI = EcoreUtil

+								.getURI(selectedModelElement);

+						return;

+					}

+				}

+			}

+			mySelectedModelElementURI = null;

+			setOkButtonEnabled(false);

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelInitDiagramFileAction.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelInitDiagramFileAction.java
new file mode 100644
index 0000000..d757cba
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelInitDiagramFileAction.java
@@ -0,0 +1,100 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.common.util.WrappedException;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;

+import org.eclipse.jface.action.IAction;

+import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.IObjectActionDelegate;

+import org.eclipse.ui.IWorkbenchPart;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+

+/**

+ * @generated

+ */

+public class ComrelInitDiagramFileAction implements IObjectActionDelegate {

+

+	/**

+	 * @generated

+	 */

+	private IWorkbenchPart targetPart;

+

+	/**

+	 * @generated

+	 */

+	private URI domainModelURI;

+

+	/**

+	 * @generated

+	 */

+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {

+		this.targetPart = targetPart;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void selectionChanged(IAction action, ISelection selection) {

+		domainModelURI = null;

+		action.setEnabled(false);

+		if (selection instanceof IStructuredSelection == false

+				|| selection.isEmpty()) {

+			return;

+		}

+		IFile file = (IFile) ((IStructuredSelection) selection)

+				.getFirstElement();

+		domainModelURI = URI.createPlatformResourceURI(file.getFullPath()

+				.toString(), true);

+		action.setEnabled(true);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Shell getShell() {

+		return targetPart.getSite().getShell();

+	}

+

+	/**

+	 * @generated

+	 */

+	public void run(IAction action) {

+		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE

+				.createEditingDomain();

+		ResourceSet resourceSet = editingDomain.getResourceSet();

+		EObject diagramRoot = null;

+		try {

+			Resource resource = resourceSet.getResource(domainModelURI, true);

+			diagramRoot = (EObject) resource.getContents().get(0);

+		} catch (WrappedException ex) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Unable to load resource: " + domainModelURI, ex); //$NON-NLS-1$

+		}

+		if (diagramRoot == null) {

+			MessageDialog.openError(getShell(),

+					Messages.InitDiagramFile_ResourceErrorDialogTitle,

+					Messages.InitDiagramFile_ResourceErrorDialogMessage);

+			return;

+		}

+		Wizard wizard = new ComrelNewDiagramFileWizard(domainModelURI,

+				diagramRoot, editingDomain);

+		wizard.setWindowTitle(NLS.bind(Messages.InitDiagramFile_WizardTitle,

+				CompositeRefactoringEditPart.MODEL_ID));

+		ComrelDiagramEditorUtil

+				.runWizard(getShell(), wizard, "InitDiagramFile"); //$NON-NLS-1$

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelLinkDescriptor.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelLinkDescriptor.java
new file mode 100644
index 0000000..e41084d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelLinkDescriptor.java
@@ -0,0 +1,96 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+

+/**

+ * @generated

+ */

+public class ComrelLinkDescriptor extends ComrelNodeDescriptor {

+

+	/**

+	 * @generated

+	 */

+	private EObject mySource;

+

+	/**

+	 * @generated

+	 */

+	private EObject myDestination;

+

+	/**

+	 * @generated

+	 */

+	private IAdaptable mySemanticAdapter;

+

+	/**

+	 * @generated

+	 */

+	private ComrelLinkDescriptor(EObject source, EObject destination,

+			EObject linkElement, int linkVID) {

+		super(linkElement, linkVID);

+		mySource = source;

+		myDestination = destination;

+	}

+

+	/**

+	 * @generated

+	 */

+	public ComrelLinkDescriptor(EObject source, EObject destination,

+			IElementType elementType, int linkVID) {

+		this(source, destination, (EObject) null, linkVID);

+		final IElementType elementTypeCopy = elementType;

+		mySemanticAdapter = new IAdaptable() {

+			public Object getAdapter(Class adapter) {

+				if (IElementType.class.equals(adapter)) {

+					return elementTypeCopy;

+				}

+				return null;

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public ComrelLinkDescriptor(EObject source, EObject destination,

+			EObject linkElement, IElementType elementType, int linkVID) {

+		this(source, destination, linkElement, linkVID);

+		final IElementType elementTypeCopy = elementType;

+		mySemanticAdapter = new EObjectAdapter(linkElement) {

+			public Object getAdapter(Class adapter) {

+				if (IElementType.class.equals(adapter)) {

+					return elementTypeCopy;

+				}

+				return super.getAdapter(adapter);

+			}

+		};

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject getSource() {

+		return mySource;

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject getDestination() {

+		return myDestination;

+	}

+

+	/**

+	 * @generated

+	 */

+	public IAdaptable getSemanticAdapter() {

+		return mySemanticAdapter;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelMatchingStrategy.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelMatchingStrategy.java
new file mode 100644
index 0000000..cb90883
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelMatchingStrategy.java
@@ -0,0 +1,39 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.emf.common.ui.URIEditorInput;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IEditorMatchingStrategy;

+import org.eclipse.ui.IEditorReference;

+import org.eclipse.ui.PartInitException;

+

+/**

+ * @generated

+ */

+public class ComrelMatchingStrategy implements IEditorMatchingStrategy {

+

+	/**

+	 * @generated

+	 */

+	public boolean matches(IEditorReference editorRef, IEditorInput input) {

+		IEditorInput editorInput;

+		try {

+			editorInput = editorRef.getEditorInput();

+		} catch (PartInitException e) {

+			return false;

+		}

+

+		if (editorInput.equals(input)) {

+			return true;

+		}

+		if (editorInput instanceof URIEditorInput

+				&& input instanceof URIEditorInput) {

+			return ((URIEditorInput) editorInput).getURI().equals(

+					((URIEditorInput) input).getURI());

+		}

+		return false;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelNewDiagramFileWizard.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelNewDiagramFileWizard.java
new file mode 100644
index 0000000..e45adc8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelNewDiagramFileWizard.java
@@ -0,0 +1,203 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.io.IOException;

+import java.util.LinkedList;

+

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.core.commands.operations.OperationHistoryFactory;

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.NullProgressMonitor;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gmf.runtime.common.core.command.CommandResult;

+import org.eclipse.gmf.runtime.diagram.core.services.ViewService;

+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateDiagramViewOperation;

+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;

+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.ui.PartInitException;

+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+

+/**

+ * @generated

+ */

+public class ComrelNewDiagramFileWizard extends Wizard {

+

+	/**

+	 * @generated

+	 */

+	private WizardNewFileCreationPage myFileCreationPage;

+

+	/**

+	 * @generated

+	 */

+	private ModelElementSelectionPage diagramRootElementSelectionPage;

+

+	/**

+	 * @generated

+	 */

+	private TransactionalEditingDomain myEditingDomain;

+

+	/**

+	 * @generated

+	 */

+	public ComrelNewDiagramFileWizard(URI domainModelURI, EObject diagramRoot,

+			TransactionalEditingDomain editingDomain) {

+		assert domainModelURI != null : "Domain model uri must be specified"; //$NON-NLS-1$

+		assert diagramRoot != null : "Doagram root element must be specified"; //$NON-NLS-1$

+		assert editingDomain != null : "Editing domain must be specified"; //$NON-NLS-1$

+

+		myFileCreationPage = new WizardNewFileCreationPage(

+				Messages.ComrelNewDiagramFileWizard_CreationPageName,

+				StructuredSelection.EMPTY);

+		myFileCreationPage

+				.setTitle(Messages.ComrelNewDiagramFileWizard_CreationPageTitle);

+		myFileCreationPage.setDescription(NLS.bind(

+				Messages.ComrelNewDiagramFileWizard_CreationPageDescription,

+				CompositeRefactoringEditPart.MODEL_ID));

+		IPath filePath;

+		String fileName = URI.decode(domainModelURI.trimFileExtension()

+				.lastSegment());

+		if (domainModelURI.isPlatformResource()) {

+			filePath = new Path(domainModelURI.trimSegments(1)

+					.toPlatformString(true));

+		} else if (domainModelURI.isFile()) {

+			filePath = new Path(domainModelURI.trimSegments(1).toFileString());

+		} else {

+			// TODO : use some default path

+			throw new IllegalArgumentException(

+					"Unsupported URI: " + domainModelURI); //$NON-NLS-1$

+		}

+		myFileCreationPage.setContainerFullPath(filePath);

+		myFileCreationPage.setFileName(ComrelDiagramEditorUtil

+				.getUniqueFileName(filePath, fileName, "comrel_diagram")); //$NON-NLS-1$

+

+		diagramRootElementSelectionPage = new DiagramRootElementSelectionPage(

+				Messages.ComrelNewDiagramFileWizard_RootSelectionPageName);

+		diagramRootElementSelectionPage

+				.setTitle(Messages.ComrelNewDiagramFileWizard_RootSelectionPageTitle);

+		diagramRootElementSelectionPage

+				.setDescription(Messages.ComrelNewDiagramFileWizard_RootSelectionPageDescription);

+		diagramRootElementSelectionPage.setModelElement(diagramRoot);

+

+		myEditingDomain = editingDomain;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void addPages() {

+		addPage(myFileCreationPage);

+		addPage(diagramRootElementSelectionPage);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean performFinish() {

+		LinkedList<IFile> affectedFiles = new LinkedList<IFile>();

+		IFile diagramFile = myFileCreationPage.createNewFile();

+		ComrelDiagramEditorUtil.setCharset(diagramFile);

+		affectedFiles.add(diagramFile);

+		URI diagramModelURI = URI.createPlatformResourceURI(diagramFile

+				.getFullPath().toString(), true);

+		ResourceSet resourceSet = myEditingDomain.getResourceSet();

+		final Resource diagramResource = resourceSet

+				.createResource(diagramModelURI);

+		AbstractTransactionalCommand command = new AbstractTransactionalCommand(

+				myEditingDomain,

+				Messages.ComrelNewDiagramFileWizard_InitDiagramCommand,

+				affectedFiles) {

+

+			protected CommandResult doExecuteWithResult(

+					IProgressMonitor monitor, IAdaptable info)

+					throws ExecutionException {

+				int diagramVID = ComrelVisualIDRegistry

+						.getDiagramVisualID(diagramRootElementSelectionPage

+								.getModelElement());

+				if (diagramVID != CompositeRefactoringEditPart.VISUAL_ID) {

+					return CommandResult

+							.newErrorCommandResult(Messages.ComrelNewDiagramFileWizard_IncorrectRootError);

+				}

+				Diagram diagram = ViewService.createDiagram(

+						diagramRootElementSelectionPage.getModelElement(),

+						CompositeRefactoringEditPart.MODEL_ID,

+						ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);

+				diagramResource.getContents().add(diagram);

+				return CommandResult.newOKCommandResult();

+			}

+		};

+		try {

+			OperationHistoryFactory.getOperationHistory().execute(command,

+					new NullProgressMonitor(), null);

+			diagramResource.save(ComrelDiagramEditorUtil.getSaveOptions());

+			ComrelDiagramEditorUtil.openDiagram(diagramResource);

+		} catch (ExecutionException e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Unable to create model and diagram", e); //$NON-NLS-1$

+		} catch (IOException ex) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Save operation failed for: " + diagramModelURI, ex); //$NON-NLS-1$

+		} catch (PartInitException ex) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Unable to open editor", ex); //$NON-NLS-1$

+		}

+		return true;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class DiagramRootElementSelectionPage extends

+			ModelElementSelectionPage {

+

+		/**

+		 * @generated

+		 */

+		protected DiagramRootElementSelectionPage(String pageName) {

+			super(pageName);

+		}

+

+		/**

+		 * @generated

+		 */

+		protected String getSelectionTitle() {

+			return Messages.ComrelNewDiagramFileWizard_RootSelectionPageSelectionTitle;

+		}

+

+		/**

+		 * @generated

+		 */

+		protected boolean validatePage() {

+			if (selectedModelElement == null) {

+				setErrorMessage(Messages.ComrelNewDiagramFileWizard_RootSelectionPageNoSelectionMessage);

+				return false;

+			}

+			boolean result = ViewService

+					.getInstance()

+					.provides(

+							new CreateDiagramViewOperation(

+									new EObjectAdapter(selectedModelElement),

+									CompositeRefactoringEditPart.MODEL_ID,

+									ComrelDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));

+			setErrorMessage(result ? null

+					: Messages.ComrelNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage);

+			return result;

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelNodeDescriptor.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelNodeDescriptor.java
new file mode 100644
index 0000000..aff2967
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelNodeDescriptor.java
@@ -0,0 +1,45 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * @generated

+ */

+public class ComrelNodeDescriptor {

+

+	/**

+	 * @generated

+	 */

+	private final EObject myModelElement;

+

+	/**

+	 * @generated

+	 */

+	private final int myVisualID;

+

+	/**

+	 * @generated

+	 */

+	public ComrelNodeDescriptor(EObject modelElement, int visualID) {

+		myModelElement = modelElement;

+		myVisualID = visualID;

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject getModelElement() {

+		return myModelElement;

+	}

+

+	/**

+	 * @generated

+	 */

+	public int getVisualID() {

+		return myVisualID;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelPaletteFactory.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelPaletteFactory.java
new file mode 100644
index 0000000..e2bc74d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelPaletteFactory.java
@@ -0,0 +1,744 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.gef.Tool;

+import org.eclipse.gef.palette.PaletteContainer;

+import org.eclipse.gef.palette.PaletteDrawer;

+import org.eclipse.gef.palette.PaletteRoot;

+import org.eclipse.gef.palette.ToolEntry;

+import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeConnectionTool;

+import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeCreationTool;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+

+import comrel.ModelRefactoring;

+import comrel.MultiFeatureHelper;

+import comrel.MultiFilterHelper;

+import comrel.SingleFeatureHelper;

+import comrel.SingleFilterHelper;

+import comrel.diagram.part.custom.ToolEntryComparator;

+import comrel.diagram.part.custom.UnspecifiedTypeCreationToolWithUnitId;

+import comrel.diagram.providers.ComrelElementTypes;

+import comrel.impl.CompositeRefactoringImpl;

+import comrel.util.ComrelUtil;

+import comrel.util.RegistryUtil;

+

+/**

+ * @generated

+ */

+public class ComrelPaletteFactory {

+

+	public static final String UNIT_ID = "UNIT_ID";

+

+	/**

+	 * @generated

+	 */

+	public void fillPalette(PaletteRoot paletteRoot) {

+		paletteRoot.add(createCompositeUnits1Group());

+		paletteRoot.add(createAtomicUnits2Group());

+		paletteRoot.add(createFilterUnits3Group());

+		paletteRoot.add(createFeatureUnits4Group());

+		paletteRoot.add(createPorts5Group());

+		paletteRoot.add(createMappings6Group());

+	}

+

+	/**

+	 * Erstellt alle nötigen Tooleinträge für alle verfügbaren AtomicUNits

+	 * 

+	 * @return

+	 */

+	private EList<ToolEntry> createAtomicUnits() {

+		EList<ToolEntry> erg = new BasicEList<ToolEntry>();

+		Collection<ModelRefactoring> refactorings = RegistryUtil

+				.getEmfRefactoringsAsModelRefactorings(CompositeRefactoringImpl.nsUri);

+		refactorings = ComrelUtil.sortAtomicRefactorings(refactorings);

+		List<IElementType> types;

+		for (ModelRefactoring ref : refactorings) {

+			if (ref.getNamespaceUri().equals(CompositeRefactoringImpl.nsUri)) {

+				types = new ArrayList<IElementType>(7); //(3) ???

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_2007);

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_3034);

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_3049);

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_3068);

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_3074);

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_3077);

+				types.add(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_3078);

+

+				NodeToolEntry entry = new NodeToolEntry(ref.getName(),

+						ref.getName(), types);

+				entry.setUnitId(ref.getRefId());

+				entry.setId(ref.getRefId()); //$NON-NLS-1$

+				entry.setSmallIcon(comrel.diagram.providers.ComrelElementTypes

+						.getImageDescriptor(comrel.diagram.providers.ComrelElementTypes.AtomicUnit_2007));

+				entry.setLargeIcon(entry.getSmallIcon());

+				erg.add(entry);

+			}

+		}

+

+		return erg;

+	}

+

+	/**

+	 * Erstellt alle nötigen Tooleinträge für alle verfügbaren FilterUnits

+	 * 

+	 * @return

+	 */

+	private EList<ToolEntry> createSingleFilterUnits() {

+		EList<ToolEntry> erg = new BasicEList<ToolEntry>();

+

+		Set<SingleFilterHelper> helper = RegistryUtil

+				.loadSingleFilterHelper(CompositeRefactoringImpl.nsUri);

+		List<IElementType> types;

+		NodeToolEntry entry;

+		for (SingleFilterHelper filter : helper) {

+			types = new ArrayList<IElementType>(5); //(1)???

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFilterUnit_3063);

+

+			entry = new NodeToolEntry(filter.getName(), filter.getName(), types);

+			entry.setUnitId(filter.getHelperId());

+			entry.setId(filter.getHelperId()); //$NON-NLS-1$

+			entry.setSmallIcon(comrel.diagram.providers.ComrelElementTypes

+					.getImageDescriptor(comrel.diagram.providers.ComrelElementTypes.SingleFilterUnit_3016));

+			entry.setLargeIcon(entry.getSmallIcon());

+			erg.add(entry);

+

+		}

+

+		return erg;

+	}

+

+	/**

+	 * Erstellt alle nötigen Tooleinträge für alle verfügbaren FilterUnits

+	 * 

+	 * @return

+	 */

+	private EList<ToolEntry> createMultiFilterUnits() {

+		EList<ToolEntry> erg = new BasicEList<ToolEntry>();

+

+		Set<MultiFilterHelper> helper = RegistryUtil

+				.loadMultiFilterHelper(CompositeRefactoringImpl.nsUri);

+		List<IElementType> types;

+		NodeToolEntry entry;

+		for (MultiFilterHelper filter : helper) {

+			types = new ArrayList<IElementType>(5); //(1)???

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFilterUnit_3019);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFilterUnit_3041);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFilterUnit_3053);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFilterUnit_3058);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFilterUnit_3064);

+

+			entry = new NodeToolEntry(filter.getName(), filter.getName(), types);

+			entry.setUnitId(filter.getHelperId());

+			entry.setId(filter.getHelperId()); //$NON-NLS-1$

+			entry.setSmallIcon(comrel.diagram.providers.ComrelElementTypes

+					.getImageDescriptor(comrel.diagram.providers.ComrelElementTypes.MultiFilterUnit_3019));

+			entry.setLargeIcon(entry.getSmallIcon());

+			erg.add(entry);

+

+		}

+

+		return erg;

+	}

+

+	/**

+	 * Erstellt alle nötigen Tooleinträge für alle verfügbaren

+	 * SingleFeatureUnits

+	 * 

+	 * @return

+	 */

+	private EList<ToolEntry> createSingleFeatureUnits() {

+		EList<ToolEntry> erg = new BasicEList<ToolEntry>();

+		Set<SingleFeatureHelper> helper = RegistryUtil

+				.loadSingleFeatureHelper(CompositeRefactoringImpl.nsUri);

+		List<IElementType> types;

+		NodeToolEntry entry;

+

+		for (SingleFeatureHelper singleFeature : helper) {

+			types = new ArrayList<IElementType>(5); // (1) ???

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(comrel.diagram.providers.ComrelElementTypes.SingleFeatureUnit_3061);

+

+			entry = new NodeToolEntry(singleFeature.getName(),

+					singleFeature.getName(), types);

+			entry.setUnitId(singleFeature.getHelperId());

+			entry.setId(singleFeature.getHelperId()); //$NON-NLS-1$

+			entry.setSmallIcon(comrel.diagram.providers.ComrelElementTypes

+					.getImageDescriptor(comrel.diagram.providers.ComrelElementTypes.SingleFeatureUnit_3008));

+			entry.setLargeIcon(entry.getSmallIcon());

+			erg.add(entry);

+

+		}

+

+		return erg;

+	}

+

+	/**

+	 * Erstellt alle nötigen Tooleinträge für alle verfügbaren MultiFeatureUnits

+	 * 

+	 * @return

+	 */

+	private EList<ToolEntry> createMultiFeatureUnits() {

+		EList<ToolEntry> erg = new BasicEList<ToolEntry>();

+		Set<MultiFeatureHelper> helper = RegistryUtil

+				.loadMultiFeatureHelper(CompositeRefactoringImpl.nsUri);

+		List<IElementType> types;

+		NodeToolEntry entry;

+

+		for (MultiFeatureHelper multiFeature : helper) {

+

+			types = new ArrayList<IElementType>(5); //(1) ???

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(comrel.diagram.providers.ComrelElementTypes.MultiFeatureUnit_3062);

+

+			entry = new NodeToolEntry(multiFeature.getName(),

+					multiFeature.getName(), types);

+			entry.setUnitId(multiFeature.getHelperId());

+			entry.setId(multiFeature.getHelperId()); //$NON-NLS-1$

+			entry.setSmallIcon(comrel.diagram.providers.ComrelElementTypes

+					.getImageDescriptor(comrel.diagram.providers.ComrelElementTypes.MultiFeatureUnit_3012));

+			entry.setLargeIcon(entry.getSmallIcon());

+			erg.add(entry);

+

+		}

+

+		return erg;

+	}

+

+	/**

+	 * Creates "Composite Units" palette tool group

+	 * @generated

+	 */

+	private PaletteContainer createCompositeUnits1Group() {

+		PaletteDrawer paletteContainer = new PaletteDrawer(

+				Messages.CompositeUnits1Group_title);

+		paletteContainer.setId("createCompositeUnits1Group"); //$NON-NLS-1$

+		paletteContainer.add(createCartesianQueuedUnit1CreationTool());

+		paletteContainer.add(createConditionCheck2CreationTool());

+		paletteContainer.add(createConditionalUnit3CreationTool());

+		paletteContainer.add(createParallelQueuedUnit4CreationTool());

+		paletteContainer.add(createSequentialUnit5CreationTool());

+		paletteContainer.add(createSingleQueuedUnit6CreationTool());

+		return paletteContainer;

+	}

+

+	/**

+	 * Creates "Atomic Units" palette tool group

+	 * @generated NOT

+	 */

+	private PaletteContainer createAtomicUnits2Group() {

+		PaletteDrawer paletteContainer = new PaletteDrawer(

+				Messages.AtomicUnits2Group_title);

+		paletteContainer.setId("createAtomicUnits2Group"); //$NON-NLS-1$

+		paletteContainer.addAll(this.createAtomicUnits());

+		return paletteContainer;

+	}

+

+	/**

+	 * Creates "Filter Units" palette tool group

+	 * @generated NOT

+	 */

+	private PaletteContainer createFilterUnits3Group() {

+		PaletteDrawer paletteContainer = new PaletteDrawer(

+				Messages.FilterUnits3Group_title);

+		paletteContainer.setId("createFilterUnits3Group"); //$NON-NLS-1$

+		ArrayList<ToolEntry> result = new ArrayList<ToolEntry>();

+		result.addAll(createSingleFilterUnits());

+		result.addAll(createMultiFilterUnits());

+		Collections.sort(result, new ToolEntryComparator());

+		paletteContainer.addAll(result);

+		return paletteContainer;

+	}

+

+	/**

+	 * Creates "Feature Units" palette tool group

+	 * @generated NOT

+	 */

+	private PaletteContainer createFeatureUnits4Group() {

+		PaletteDrawer paletteContainer = new PaletteDrawer(

+				Messages.FeatureUnits4Group_title);

+		paletteContainer.setId("createFeatureUnits4Group"); //$NON-NLS-1$

+		ArrayList<ToolEntry> result = new ArrayList<ToolEntry>();

+		result.addAll(createSingleFeatureUnits());

+		result.addAll(createMultiFeatureUnits());

+		Collections.sort(result, new ToolEntryComparator());

+		paletteContainer.addAll(result);

+		return paletteContainer;

+	}

+

+	/**

+	 * Creates "Ports" palette tool group

+	 * @generated NOT

+	 */

+	private PaletteContainer createPorts5Group() {

+		PaletteDrawer paletteContainer = new PaletteDrawer(

+				Messages.Ports5Group_title);

+		paletteContainer.setId("createPorts5Group"); //$NON-NLS-1$

+		paletteContainer.add(createMultiInputPort1CreationTool());

+		// paletteContainer.add(createMultiOutputPort2CreationTool());

+		paletteContainer.add(createSingleInputPort3CreationTool());

+		// paletteContainer.add(createSingleOutputPort4CreationTool());

+		return paletteContainer;

+	}

+

+	/**

+	 * Creates "Mappings" palette tool group

+	 * @generated

+	 */

+	private PaletteContainer createMappings6Group() {

+		PaletteDrawer paletteContainer = new PaletteDrawer(

+				Messages.Mappings6Group_title);

+		paletteContainer.setId("createMappings6Group"); //$NON-NLS-1$

+		paletteContainer.add(createMultiPortMapping1CreationTool());

+		paletteContainer.add(createMultiSinglePortMapping2CreationTool());

+		paletteContainer.add(createSinglePortMapping3CreationTool());

+		return paletteContainer;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createCartesianQueuedUnit1CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_2002);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+		types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.CartesianQueuedUnit1CreationTool_title,

+				Messages.CartesianQueuedUnit1CreationTool_desc, types);

+		entry.setId("createCartesianQueuedUnit1CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.CartesianQueuedUnit_2002));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createConditionCheck2CreationTool() {

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.ConditionCheck2CreationTool_title,

+				Messages.ConditionCheck2CreationTool_desc,

+				Collections

+						.singletonList(ComrelElementTypes.ConditionCheck_3076));

+		entry.setId("createConditionCheck2CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.ConditionCheck_3076));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createConditionalUnit3CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+		types.add(ComrelElementTypes.ConditionalUnit_3030);

+		types.add(ComrelElementTypes.ConditionalUnit_3046);

+		types.add(ComrelElementTypes.ConditionalUnit_3066);

+		types.add(ComrelElementTypes.ConditionalUnit_3071);

+		types.add(ComrelElementTypes.ConditionalUnit_3072);

+		types.add(ComrelElementTypes.ConditionalUnit_3075);

+		types.add(ComrelElementTypes.ConditionalUnit_2006);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.ConditionalUnit3CreationTool_title,

+				Messages.ConditionalUnit3CreationTool_desc, types);

+		entry.setId("createConditionalUnit3CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.ConditionalUnit_3030));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createParallelQueuedUnit4CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+		types.add(ComrelElementTypes.ParallelQueuedUnit_2003);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.ParallelQueuedUnit4CreationTool_title,

+				Messages.ParallelQueuedUnit4CreationTool_desc, types);

+		entry.setId("createParallelQueuedUnit4CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.ParallelQueuedUnit_3004));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSequentialUnit5CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+		types.add(ComrelElementTypes.SequentialUnit_3026);

+		types.add(ComrelElementTypes.SequentialUnit_3044);

+		types.add(ComrelElementTypes.SequentialUnit_3060);

+		types.add(ComrelElementTypes.SequentialUnit_3069);

+		types.add(ComrelElementTypes.SequentialUnit_3070);

+		types.add(ComrelElementTypes.SequentialUnit_3073);

+		types.add(ComrelElementTypes.SequentialUnit_2005);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.SequentialUnit5CreationTool_title,

+				Messages.SequentialUnit5CreationTool_desc, types);

+		entry.setId("createSequentialUnit5CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SequentialUnit_3026));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSingleQueuedUnit6CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+		types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+		types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+		types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+		types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+		types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+		types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+		types.add(ComrelElementTypes.SingleQueuedUnit_2004);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.SingleQueuedUnit6CreationTool_title,

+				Messages.SingleQueuedUnit6CreationTool_desc, types);

+		entry.setId("createSingleQueuedUnit6CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SingleQueuedUnit_3022));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createAtomicUnit1CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+		types.add(ComrelElementTypes.AtomicUnit_3034);

+		types.add(ComrelElementTypes.AtomicUnit_3049);

+		types.add(ComrelElementTypes.AtomicUnit_3068);

+		types.add(ComrelElementTypes.AtomicUnit_3074);

+		types.add(ComrelElementTypes.AtomicUnit_3077);

+		types.add(ComrelElementTypes.AtomicUnit_3078);

+		types.add(ComrelElementTypes.AtomicUnit_2007);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.AtomicUnit1CreationTool_title,

+				Messages.AtomicUnit1CreationTool_desc, types);

+		entry.setId("createAtomicUnit1CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.AtomicUnit_3034));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createMultiFilterUnit1CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(5);

+		types.add(ComrelElementTypes.MultiFilterUnit_3019);

+		types.add(ComrelElementTypes.MultiFilterUnit_3041);

+		types.add(ComrelElementTypes.MultiFilterUnit_3053);

+		types.add(ComrelElementTypes.MultiFilterUnit_3058);

+		types.add(ComrelElementTypes.MultiFilterUnit_3064);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.MultiFilterUnit1CreationTool_title,

+				Messages.MultiFilterUnit1CreationTool_desc, types);

+		entry.setId("createMultiFilterUnit1CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.MultiFilterUnit_3019));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSingleFilterUnit2CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(5);

+		types.add(ComrelElementTypes.SingleFilterUnit_3016);

+		types.add(ComrelElementTypes.SingleFilterUnit_3040);

+		types.add(ComrelElementTypes.SingleFilterUnit_3052);

+		types.add(ComrelElementTypes.SingleFilterUnit_3057);

+		types.add(ComrelElementTypes.SingleFilterUnit_3063);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.SingleFilterUnit2CreationTool_title,

+				Messages.SingleFilterUnit2CreationTool_desc, types);

+		entry.setId("createSingleFilterUnit2CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SingleFilterUnit_3016));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createMultiFeatureUnit1CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(5);

+		types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+		types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+		types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+		types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+		types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.MultiFeatureUnit1CreationTool_title,

+				Messages.MultiFeatureUnit1CreationTool_desc, types);

+		entry.setId("createMultiFeatureUnit1CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.MultiFeatureUnit_3012));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSingleFeatureUnit2CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(5);

+		types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+		types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+		types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+		types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+		types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.SingleFeatureUnit2CreationTool_title,

+				Messages.SingleFeatureUnit2CreationTool_desc, types);

+		entry.setId("createSingleFeatureUnit2CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SingleFeatureUnit_3008));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createMultiInputPort1CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(9);

+		types.add(ComrelElementTypes.MultiInputPort_3002);

+		types.add(ComrelElementTypes.MultiInputPort_3006);

+		types.add(ComrelElementTypes.MultiInputPort_3010);

+		types.add(ComrelElementTypes.MultiInputPort_3014);

+		types.add(ComrelElementTypes.MultiInputPort_3017);

+		types.add(ComrelElementTypes.MultiInputPort_3020);

+		types.add(ComrelElementTypes.MultiInputPort_3024);

+		types.add(ComrelElementTypes.MultiInputPort_3028);

+		types.add(ComrelElementTypes.MultiInputPort_3032);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.MultiInputPort1CreationTool_title,

+				Messages.MultiInputPort1CreationTool_desc, types);

+		entry.setId("createMultiInputPort1CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.MultiInputPort_3002));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createMultiOutputPort2CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.MultiOutputPort_3015);

+		types.add(ComrelElementTypes.MultiOutputPort_3021);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.MultiOutputPort2CreationTool_title,

+				Messages.MultiOutputPort2CreationTool_desc, types);

+		entry.setId("createMultiOutputPort2CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.MultiOutputPort_3015));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSingleInputPort3CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(9);

+		types.add(ComrelElementTypes.SingleInputPort_2001);

+		types.add(ComrelElementTypes.SingleInputPort_3001);

+		types.add(ComrelElementTypes.SingleInputPort_3005);

+		types.add(ComrelElementTypes.SingleInputPort_3009);

+		types.add(ComrelElementTypes.SingleInputPort_3013);

+		types.add(ComrelElementTypes.SingleInputPort_3023);

+		types.add(ComrelElementTypes.SingleInputPort_3027);

+		types.add(ComrelElementTypes.SingleInputPort_3031);

+		types.add(ComrelElementTypes.SingleInputPort_3035);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.SingleInputPort3CreationTool_title,

+				Messages.SingleInputPort3CreationTool_desc, types);

+		entry.setId("createSingleInputPort3CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SingleInputPort_2001));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSingleOutputPort4CreationTool() {

+		ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+		types.add(ComrelElementTypes.SingleOutputPort_3011);

+		types.add(ComrelElementTypes.SingleOutputPort_3018);

+		NodeToolEntry entry = new NodeToolEntry(

+				Messages.SingleOutputPort4CreationTool_title,

+				Messages.SingleOutputPort4CreationTool_desc, types);

+		entry.setId("createSingleOutputPort4CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SingleOutputPort_3011));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createMultiPortMapping1CreationTool() {

+		LinkToolEntry entry = new LinkToolEntry(

+				Messages.MultiPortMapping1CreationTool_title,

+				Messages.MultiPortMapping1CreationTool_desc,

+				Collections

+						.singletonList(ComrelElementTypes.MultiPortMapping_4002));

+		entry.setId("createMultiPortMapping1CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.MultiPortMapping_4002));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createMultiSinglePortMapping2CreationTool() {

+		LinkToolEntry entry = new LinkToolEntry(

+				Messages.MultiSinglePortMapping2CreationTool_title,

+				Messages.MultiSinglePortMapping2CreationTool_desc,

+				Collections

+						.singletonList(ComrelElementTypes.MultiSinglePortMapping_4003));

+		entry.setId("createMultiSinglePortMapping2CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.MultiSinglePortMapping_4003));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private ToolEntry createSinglePortMapping3CreationTool() {

+		LinkToolEntry entry = new LinkToolEntry(

+				Messages.SinglePortMapping3CreationTool_title,

+				Messages.SinglePortMapping3CreationTool_desc,

+				Collections

+						.singletonList(ComrelElementTypes.SinglePortMapping_4001));

+		entry.setId("createSinglePortMapping3CreationTool"); //$NON-NLS-1$

+		entry.setSmallIcon(ComrelElementTypes

+				.getImageDescriptor(ComrelElementTypes.SinglePortMapping_4001));

+		entry.setLargeIcon(entry.getSmallIcon());

+		return entry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class NodeToolEntry extends ToolEntry {

+

+		String unitId = "";

+

+		/**

+		 * @generated

+		 */

+		private final List<IElementType> elementTypes;

+

+		/**

+		 * @generated

+		 */

+		private NodeToolEntry(String title, String description,

+				List<IElementType> elementTypes) {

+			super(title, description, null, null);

+			this.elementTypes = elementTypes;

+		}

+

+		/**

+		 * @generated NOT

+		 */

+		public Tool createTool() {

+			/*

+			 * change: UnspecifiedTypeCReateionTool ->

+			 * UnspecifiedTypeCreationToolWithUnitId

+			 */

+			UnspecifiedTypeCreationTool tool = new UnspecifiedTypeCreationToolWithUnitId(

+					elementTypes, unitId);

+			Map prop = getToolProperties();

+			tool.setProperties(prop);

+			return tool;

+		}

+

+		public void setUnitId(String unitId) {

+			this.unitId = unitId;

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class LinkToolEntry extends ToolEntry {

+

+		/**

+		 * @generated

+		 */

+		private final List<IElementType> relationshipTypes;

+

+		/**

+		 * @generated

+		 */

+		private LinkToolEntry(String title, String description,

+				List<IElementType> relationshipTypes) {

+			super(title, description, null, null);

+			this.relationshipTypes = relationshipTypes;

+		}

+

+		/**

+		 * @generated

+		 */

+		public Tool createTool() {

+			Tool tool = new UnspecifiedTypeConnectionTool(relationshipTypes);

+			tool.setProperties(getToolProperties());

+			return tool;

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelShortcutPropertyTester.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelShortcutPropertyTester.java
new file mode 100644
index 0000000..93c8c34
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelShortcutPropertyTester.java
@@ -0,0 +1,41 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.expressions.PropertyTester;

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+

+/**

+ * @generated

+ */

+public class ComrelShortcutPropertyTester extends PropertyTester {

+

+	/**

+	 * @generated

+	 */

+	protected static final String SHORTCUT_PROPERTY = "isShortcut"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public boolean test(Object receiver, String method, Object[] args,

+			Object expectedValue) {

+		if (false == receiver instanceof View) {

+			return false;

+		}

+		View view = (View) receiver;

+		if (SHORTCUT_PROPERTY.equals(method)) {

+			EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+			if (annotation != null) {

+				return CompositeRefactoringEditPart.MODEL_ID.equals(annotation

+						.getDetails().get("modelID")); //$NON-NLS-1$

+			}

+		}

+		return false;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelUriEditorInputTester.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelUriEditorInputTester.java
new file mode 100644
index 0000000..7db9460
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelUriEditorInputTester.java
@@ -0,0 +1,26 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.expressions.PropertyTester;

+import org.eclipse.emf.common.ui.URIEditorInput;

+

+/**

+ * @generated

+ */

+public class ComrelUriEditorInputTester extends PropertyTester {

+

+	/**

+	 * @generated

+	 */

+	public boolean test(Object receiver, String method, Object[] args,

+			Object expectedValue) {

+		if (false == receiver instanceof URIEditorInput) {

+			return false;

+		}

+		URIEditorInput editorInput = (URIEditorInput) receiver;

+		return "comrel_diagram".equals(editorInput.getURI().fileExtension()); //$NON-NLS-1$

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelVisualIDRegistry.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelVisualIDRegistry.java
new file mode 100644
index 0000000..c61872f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ComrelVisualIDRegistry.java
@@ -0,0 +1,5058 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.*;

+

+/**

+ * This registry is used to determine which type of visual object should be

+ * created for the corresponding Diagram, Node, ChildNode or Link represented

+ * by a domain model object.

+ * 

+ * @generated

+ */

+public class ComrelVisualIDRegistry {

+

+	/**

+	 * @generated

+	 */

+	private static final String DEBUG_KEY = "comrel.diagram/debug/visualID"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public static int getVisualID(View view) {

+		if (view instanceof Diagram) {

+			if (CompositeRefactoringEditPart.MODEL_ID.equals(view.getType())) {

+				return CompositeRefactoringEditPart.VISUAL_ID;

+			} else {

+				return -1;

+			}

+		}

+		return comrel.diagram.part.ComrelVisualIDRegistry.getVisualID(view

+				.getType());

+	}

+

+	/**

+	 * @generated

+	 */

+	public static String getModelID(View view) {

+		View diagram = view.getDiagram();

+		while (view != diagram) {

+			EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+			if (annotation != null) {

+				return (String) annotation.getDetails().get("modelID"); //$NON-NLS-1$

+			}

+			view = (View) view.eContainer();

+		}

+		return diagram != null ? diagram.getType() : null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static int getVisualID(String type) {

+		try {

+			return Integer.parseInt(type);

+		} catch (NumberFormatException e) {

+			if (Boolean.TRUE.toString().equalsIgnoreCase(

+					Platform.getDebugOption(DEBUG_KEY))) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Unable to parse view type as a visualID number: "

+								+ type);

+			}

+		}

+		return -1;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static String getType(int visualID) {

+		return Integer.toString(visualID);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static int getDiagramVisualID(EObject domainElement) {

+		if (domainElement == null) {

+			return -1;

+		}

+		if (ComrelPackage.eINSTANCE.getCompositeRefactoring().isSuperTypeOf(

+				domainElement.eClass())

+				&& isDiagram((CompositeRefactoring) domainElement)) {

+			return CompositeRefactoringEditPart.VISUAL_ID;

+		}

+		return -1;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static int getNodeVisualID(View containerView, EObject domainElement) {

+		if (domainElement == null) {

+			return -1;

+		}

+		String containerModelID = comrel.diagram.part.ComrelVisualIDRegistry

+				.getModelID(containerView);

+		if (!CompositeRefactoringEditPart.MODEL_ID.equals(containerModelID)

+				&& !"comrel".equals(containerModelID)) { //$NON-NLS-1$

+			return -1;

+		}

+		int containerVisualID;

+		if (CompositeRefactoringEditPart.MODEL_ID.equals(containerModelID)) {

+			containerVisualID = comrel.diagram.part.ComrelVisualIDRegistry

+					.getVisualID(containerView);

+		} else {

+			if (containerView instanceof Diagram) {

+				containerVisualID = CompositeRefactoringEditPart.VISUAL_ID;

+			} else {

+				return -1;

+			}

+		}

+		switch (containerVisualID) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPortEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPortEditPart.VISUAL_ID;

+			}

+			break;

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiOutputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiOutputPort2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort7EditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnit4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnit6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnit7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort8EditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnit5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort8EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnit6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case AtomicUnit7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleInputPort().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleInputPort9EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnitEditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnitEditPart.VISUAL_ID;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit2EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit2EditPart.VISUAL_ID;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit4EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit5EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getConditionCheck().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionCheckEditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getSingleFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFeatureUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFeatureUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleFilterUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getMultiFilterUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return MultiFilterUnit3EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit3EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit4EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit5EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit6EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit6EditPart.VISUAL_ID;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID:

+			if (ComrelPackage.eINSTANCE.getCartesianQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return CartesianQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getParallelQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ParallelQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSingleQueuedUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SingleQueuedUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getSequentialUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return SequentialUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getConditionalUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return ConditionalUnit7EditPart.VISUAL_ID;

+			}

+			if (ComrelPackage.eINSTANCE.getAtomicUnit().isSuperTypeOf(

+					domainElement.eClass())) {

+				return AtomicUnit7EditPart.VISUAL_ID;

+			}

+			break;

+		}

+		return -1;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static boolean canCreateNode(View containerView, int nodeVisualID) {

+		String containerModelID = comrel.diagram.part.ComrelVisualIDRegistry

+				.getModelID(containerView);

+		if (!CompositeRefactoringEditPart.MODEL_ID.equals(containerModelID)

+				&& !"comrel".equals(containerModelID)) { //$NON-NLS-1$

+			return false;

+		}

+		int containerVisualID;

+		if (CompositeRefactoringEditPart.MODEL_ID.equals(containerModelID)) {

+			containerVisualID = comrel.diagram.part.ComrelVisualIDRegistry

+					.getVisualID(containerView);

+		} else {

+			if (containerView instanceof Diagram) {

+				containerVisualID = CompositeRefactoringEditPart.VISUAL_ID;

+			} else {

+				return false;

+			}

+		}

+		switch (containerVisualID) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			if (SingleInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPortEditPart.VISUAL_ID:

+			if (SingleInputPortNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitEditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitEditPart.VISUAL_ID:

+			if (ConditionalUnitNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnitEditPart.VISUAL_ID:

+			if (AtomicUnitLabelTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort2EditPart.VISUAL_ID:

+			if (SingleInputPortNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPortEditPart.VISUAL_ID:

+			if (MultiInputPortNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort3EditPart.VISUAL_ID:

+			if (SingleInputPortNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort2EditPart.VISUAL_ID:

+			if (MultiInputPortNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			if (SingleFeatureUnitNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort4EditPart.VISUAL_ID:

+			if (SingleInputPortNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort3EditPart.VISUAL_ID:

+			if (MultiInputPortNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleOutputPortEditPart.VISUAL_ID:

+			if (SingleOutputPortNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			if (MultiFeatureUnitNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort5EditPart.VISUAL_ID:

+			if (SingleInputPortNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort4EditPart.VISUAL_ID:

+			if (MultiInputPortNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiOutputPortEditPart.VISUAL_ID:

+			if (MultiOutputPortNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			if (SingleFilterUnitNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort5EditPart.VISUAL_ID:

+			if (MultiInputPortNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			if (SingleOutputPortNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			if (MultiFilterUnitNameTypeEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort6EditPart.VISUAL_ID:

+			if (MultiInputPortNameType6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			if (MultiOutputPortNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort6EditPart.VISUAL_ID:

+			if (SingleInputPortNameType6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort7EditPart.VISUAL_ID:

+			if (MultiInputPortNameType7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnit2EditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort7EditPart.VISUAL_ID:

+			if (SingleInputPortNameType7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort8EditPart.VISUAL_ID:

+			if (MultiInputPortNameType8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			if (ConditionalUnitNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort8EditPart.VISUAL_ID:

+			if (SingleInputPortNameType8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiInputPort9EditPart.VISUAL_ID:

+			if (MultiInputPortNameType9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnit2EditPart.VISUAL_ID:

+			if (AtomicUnitLabelType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleInputPort9EditPart.VISUAL_ID:

+			if (SingleInputPortNameType9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			if (SingleFeatureUnitNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			if (MultiFeatureUnitNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			if (SingleFilterUnitNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			if (MultiFilterUnitNameType2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnit3EditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			if (ConditionalUnitNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			if (ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnit3EditPart.VISUAL_ID:

+			if (AtomicUnitLabelType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			if (SingleFeatureUnitNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			if (MultiFeatureUnitNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			if (SingleFilterUnitNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			if (MultiFilterUnitNameType3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			if (SingleFeatureUnitNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			if (MultiFeatureUnitNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			if (SingleFilterUnitNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			if (MultiFilterUnitNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnit4EditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			if (SingleFeatureUnitNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			if (MultiFeatureUnitNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPortEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			if (SingleFilterUnitNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			if (MultiFilterUnitNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiOutputPort2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			if (ConditionalUnitNameType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			if (SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnit4EditPart.VISUAL_ID:

+			if (AtomicUnitLabelType4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnit5EditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnit6EditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			if (ConditionalUnitNameType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			if (ConditionalUnitNameType6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnit7EditPart.VISUAL_ID:

+			if (SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnit5EditPart.VISUAL_ID:

+			if (AtomicUnitLabelType5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			if (ConditionalUnitNameType7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort8EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionCheckEditPart.VISUAL_ID:

+			if (ConditionCheckNameTypeSpecEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnit6EditPart.VISUAL_ID:

+			if (AtomicUnitLabelType6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case AtomicUnit7EditPart.VISUAL_ID:

+			if (AtomicUnitLabelType7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleInputPort9EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (SingleFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnitEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (SingleFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit2EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (SingleFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (SingleFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID:

+			if (ConditionCheckEditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID:

+			if (SingleFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFeatureUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (MultiFilterUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit3EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit4EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit5EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit6EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		case ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID:

+			if (CartesianQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ParallelQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SingleQueuedUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (SequentialUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (ConditionalUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			if (AtomicUnit7EditPart.VISUAL_ID == nodeVisualID) {

+				return true;

+			}

+			break;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static int getLinkWithClassVisualID(EObject domainElement) {

+		if (domainElement == null) {

+			return -1;

+		}

+		if (ComrelPackage.eINSTANCE.getSinglePortMapping().isSuperTypeOf(

+				domainElement.eClass())) {

+			return SinglePortMappingEditPart.VISUAL_ID;

+		}

+		if (ComrelPackage.eINSTANCE.getMultiPortMapping().isSuperTypeOf(

+				domainElement.eClass())) {

+			return MultiPortMappingEditPart.VISUAL_ID;

+		}

+		if (ComrelPackage.eINSTANCE.getMultiSinglePortMapping().isSuperTypeOf(

+				domainElement.eClass())) {

+			return MultiSinglePortMappingEditPart.VISUAL_ID;

+		}

+		return -1;

+	}

+

+	/**

+	 * User can change implementation of this method to handle some specific

+	 * situations not covered by default logic.

+	 * 

+	 * @generated

+	 */

+	private static boolean isDiagram(CompositeRefactoring element) {

+		return true;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/DeleteElementAction.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/DeleteElementAction.java
new file mode 100644
index 0000000..654cc48
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/DeleteElementAction.java
@@ -0,0 +1,91 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.util.Iterator;

+import java.util.List;

+

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.Request;

+import org.eclipse.gef.commands.Command;

+import org.eclipse.gef.commands.UnexecutableCommand;

+import org.eclipse.gmf.runtime.diagram.ui.actions.AbstractDeleteFromAction;

+import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;

+import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;

+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages;

+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;

+import org.eclipse.ui.ISharedImages;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.PlatformUI;

+

+/**

+ * @generated

+ */

+public class DeleteElementAction extends AbstractDeleteFromAction {

+

+	/**

+	 * @generated

+	 */

+	public DeleteElementAction(IWorkbenchPart part) {

+		super(part);

+	}

+

+	/**

+	 * @generated

+	 */

+	public DeleteElementAction(IWorkbenchPage workbenchPage) {

+		super(workbenchPage);

+	}

+

+	/**

+	 * @generated

+	 */

+	public void init() {

+		super.init();

+		setId(ActionIds.ACTION_DELETE_FROM_MODEL);

+		setText(DiagramUIMessages.DiagramEditor_Delete_from_Model);

+		setToolTipText(DiagramUIMessages.DiagramEditor_Delete_from_ModelToolTip);

+		ISharedImages workbenchImages = PlatformUI.getWorkbench()

+				.getSharedImages();

+		setHoverImageDescriptor(workbenchImages

+				.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));

+		setImageDescriptor(workbenchImages

+				.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));

+		setDisabledImageDescriptor(workbenchImages

+				.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected String getCommandLabel() {

+		return DiagramUIMessages.DiagramEditor_Delete_from_Model;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected Command getCommand(Request request) {

+		List operationSet = getOperationSet();

+		if (operationSet.isEmpty()) {

+			return UnexecutableCommand.INSTANCE;

+		}

+		Iterator editParts = operationSet.iterator();

+		CompositeTransactionalCommand command = new CompositeTransactionalCommand(

+				getEditingDomain(), getCommandLabel());

+		while (editParts.hasNext()) {

+			EditPart editPart = (EditPart) editParts.next();

+			Command curCommand = editPart.getCommand(request);

+			if (curCommand != null) {

+				command.compose(new CommandProxy(curCommand));

+			}

+		}

+		if (command.isEmpty() || command.size() != operationSet.size()) {

+			return UnexecutableCommand.INSTANCE;

+		}

+		return new ICommandProxy(command);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/DiagramEditorContextMenuProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/DiagramEditorContextMenuProvider.java
new file mode 100644
index 0000000..6c2676d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/DiagramEditorContextMenuProvider.java
@@ -0,0 +1,78 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.gef.EditPartViewer;

+import org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.ContributionItemService;

+import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;

+import org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider;

+import org.eclipse.jface.action.IMenuManager;

+import org.eclipse.ui.IWorkbenchPart;

+

+/**

+ * @generated

+ */

+public class DiagramEditorContextMenuProvider extends

+		DiagramContextMenuProvider {

+

+	/**

+	 * @generated

+	 */

+	private IWorkbenchPart part;

+

+	/**

+	 * @generated

+	 */

+	private DeleteElementAction deleteAction;

+

+	/**

+	 * @generated

+	 */

+	public DiagramEditorContextMenuProvider(IWorkbenchPart part,

+			EditPartViewer viewer) {

+		super(part, viewer);

+		this.part = part;

+		deleteAction = new DeleteElementAction(part);

+		deleteAction.init();

+	}

+

+	/**

+	 * @generated

+	 */

+	public void dispose() {

+		if (deleteAction != null) {

+			deleteAction.dispose();

+			deleteAction = null;

+		}

+		super.dispose();

+	}

+

+	/**

+	 * @generated

+	 */

+	public void buildContextMenu(final IMenuManager menu) {

+		getViewer().flush();

+		try {

+			TransactionUtil.getEditingDomain(

+					(EObject) getViewer().getContents().getModel())

+					.runExclusive(new Runnable() {

+

+						public void run() {

+							ContributionItemService

+									.getInstance()

+									.contributeToPopupMenu(

+											DiagramEditorContextMenuProvider.this,

+											part);

+							menu.remove(ActionIds.ACTION_DELETE_FROM_MODEL);

+							menu.appendToGroup("editGroup", deleteAction);

+						}

+					});

+		} catch (Exception e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Error building context menu", e);

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/LoadResourceAction.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/LoadResourceAction.java
new file mode 100644
index 0000000..01cd381
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/LoadResourceAction.java
@@ -0,0 +1,34 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.core.commands.AbstractHandler;

+import org.eclipse.core.commands.ExecutionEvent;

+import org.eclipse.core.commands.ExecutionException;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.handlers.HandlerUtil;

+

+/**

+ * @generated

+ */

+public class LoadResourceAction extends AbstractHandler {

+	/**

+	 * @generated

+	 */

+	public Object execute(ExecutionEvent event) throws ExecutionException {

+		IEditorPart diagramEditor = HandlerUtil.getActiveEditorChecked(event);

+		Shell shell = diagramEditor.getEditorSite().getShell();

+		assert diagramEditor instanceof DiagramEditor;

+		TransactionalEditingDomain editingDomain = ((DiagramEditor) diagramEditor)

+				.getEditingDomain();

+		org.eclipse.emf.edit.ui.action.LoadResourceAction.LoadResourceDialog loadResourceDialog = new org.eclipse.emf.edit.ui.action.LoadResourceAction.LoadResourceDialog(

+				shell, editingDomain);

+		loadResourceDialog.open();

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/Messages.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/Messages.java
new file mode 100644
index 0000000..1f75066
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/Messages.java
@@ -0,0 +1,1152 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.osgi.util.NLS;

+

+/**

+ * @generated

+ */

+public class Messages extends NLS {

+

+	/**

+	 * @generated

+	 */

+	static {

+		NLS.initializeMessages("messages", Messages.class); //$NON-NLS-1$

+	}

+

+	/**

+	 * @generated

+	 */

+	private Messages() {

+	}

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizardTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizard_DiagramModelFilePageTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizard_DiagramModelFilePageDescription;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizard_DomainModelFilePageTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizard_DomainModelFilePageDescription;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizardOpenEditorError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizardCreationError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelCreationWizardPageExtensionError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditorUtil_OpenModelResourceErrorDialogTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditorUtil_OpenModelResourceErrorDialogMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditorUtil_CreateDiagramProgressTask;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditorUtil_CreateDiagramCommandLabel;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_isModifiable;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_handleElementContentChanged;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_IncorrectInputError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_NoDiagramInResourceError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_DiagramLoadingError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_UnsynchronizedFileSaveError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_SaveDiagramTask;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_SaveNextResourceTask;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDocumentProvider_SaveAsOperation;

+

+	/**

+	 * @generated

+	 */

+	public static String InitDiagramFile_ResourceErrorDialogTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String InitDiagramFile_ResourceErrorDialogMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String InitDiagramFile_WizardTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String InitDiagramFile_OpenModelFileDialogTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_CreationPageName;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_CreationPageTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_CreationPageDescription;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_RootSelectionPageName;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_RootSelectionPageTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_RootSelectionPageDescription;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_RootSelectionPageSelectionTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_RootSelectionPageNoSelectionMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_InitDiagramCommand;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelNewDiagramFileWizard_IncorrectRootError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditor_SavingDeletedFile;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditor_SaveAsErrorTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditor_SaveAsErrorMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditor_SaveErrorTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelDiagramEditor_SaveErrorMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelElementChooserDialog_SelectModelElementTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ModelElementSelectionPageMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String ValidateActionMessage;

+

+	/**

+	 * @generated

+	 */

+	public static String CompositeUnits1Group_title;

+

+	/**

+	 * @generated

+	 */

+	public static String AtomicUnits2Group_title;

+

+	/**

+	 * @generated

+	 */

+	public static String FilterUnits3Group_title;

+

+	/**

+	 * @generated

+	 */

+	public static String FeatureUnits4Group_title;

+

+	/**

+	 * @generated

+	 */

+	public static String Ports5Group_title;

+

+	/**

+	 * @generated

+	 */

+	public static String Mappings6Group_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnit1CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnit1CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionCheck2CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionCheck2CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnit3CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnit3CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnit4CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnit4CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnit5CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnit5CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnit6CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnit6CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String AtomicUnit1CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String AtomicUnit1CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiFilterUnit1CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiFilterUnit1CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleFilterUnit2CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleFilterUnit2CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiFeatureUnit1CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiFeatureUnit1CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleFeatureUnit2CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleFeatureUnit2CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiInputPort1CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiInputPort1CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiOutputPort2CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiOutputPort2CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleInputPort3CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleInputPort3CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleOutputPort4CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleOutputPort4CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiPortMapping1CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiPortMapping1CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiSinglePortMapping2CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String MultiSinglePortMapping2CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String SinglePortMapping3CreationTool_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SinglePortMapping3CreationTool_desc;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartmentEditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartment2EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartment3EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartment4EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartment5EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartment6EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitIfCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitThenCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String ConditionalUnitConditionalUnitElseCompartment7EditPart_title;

+

+	/**

+	 * @generated

+	 */

+	public static String CommandName_OpenDiagram;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3017_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3017_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3035_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3035_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3032_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3032_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3013_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3013_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3024_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3024_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiPortMapping_4002_target;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiPortMapping_4002_source;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3020_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3020_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleOutputPort_3018_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SinglePortMapping_4001_target;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SinglePortMapping_4001_source;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3010_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3010_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3023_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3023_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiOutputPort_3015_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleOutputPort_3011_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3005_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3005_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3002_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3002_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3006_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3006_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3031_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3031_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiOutputPort_3021_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_2001_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_2001_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3009_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3009_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_CompositeRefactoring_1000_links;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3027_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3027_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3001_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_SingleInputPort_3001_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3028_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3028_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiSinglePortMapping_4003_target;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiSinglePortMapping_4003_source;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3014_incominglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorGroupName_MultiInputPort_3014_outgoinglinks;

+

+	/**

+	 * @generated

+	 */

+	public static String NavigatorActionProvider_OpenDiagramActionName;

+

+	/**

+	 * @generated

+	 */

+	public static String AbstractParser_UnexpectedValueType;

+

+	/**

+	 * @generated

+	 */

+	public static String AbstractParser_WrongStringConversion;

+

+	/**

+	 * @generated

+	 */

+	public static String AbstractParser_UnknownLiteral;

+

+	/**

+	 * @generated

+	 */

+	public static String MessageFormatParser_InvalidInputError;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelModelingAssistantProviderTitle;

+

+	/**

+	 * @generated

+	 */

+	public static String ComrelModelingAssistantProviderMessage;

+

+	//TODO: put accessor fields manually	

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ModelElementSelectionPage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ModelElementSelectionPage.java
new file mode 100644
index 0000000..a805458
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ModelElementSelectionPage.java
@@ -0,0 +1,153 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.util.FeatureMap;

+import org.eclipse.emf.edit.provider.IWrapperItemProvider;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;

+import org.eclipse.jface.viewers.ISelectionChangedListener;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.SelectionChangedEvent;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.jface.viewers.TreeViewer;

+import org.eclipse.jface.wizard.WizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Label;

+

+/**

+ * Wizard page that allows to select element from model.

+ * @generated

+ */

+public class ModelElementSelectionPage extends WizardPage {

+	/**

+	 * @generated

+	 */

+	protected EObject selectedModelElement;

+

+	/**

+	 * @generated

+	 */

+	private TreeViewer modelViewer;

+

+	/**

+	 * @generated

+	 */

+	public ModelElementSelectionPage(String pageName) {

+		super(pageName);

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject getModelElement() {

+		return selectedModelElement;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setModelElement(EObject modelElement) {

+		selectedModelElement = modelElement;

+		if (modelViewer != null) {

+			if (selectedModelElement != null) {

+				modelViewer.setInput(selectedModelElement.eResource());

+				modelViewer.setSelection(new StructuredSelection(

+						selectedModelElement));

+			} else {

+				modelViewer.setInput(null);

+			}

+			setPageComplete(validatePage());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public void createControl(Composite parent) {

+		initializeDialogUnits(parent);

+

+		Composite plate = new Composite(parent, SWT.NONE);

+		plate.setLayoutData(new GridData(GridData.FILL_BOTH));

+		GridLayout layout = new GridLayout();

+		layout.marginWidth = 0;

+		plate.setLayout(layout);

+		setControl(plate);

+

+		Label label = new Label(plate, SWT.NONE);

+		label.setText(getSelectionTitle());

+		label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));

+

+		modelViewer = new TreeViewer(plate, SWT.SINGLE | SWT.H_SCROLL

+				| SWT.V_SCROLL | SWT.BORDER);

+		GridData layoutData = new GridData(GridData.FILL_BOTH);

+		layoutData.heightHint = 300;

+		layoutData.widthHint = 300;

+		modelViewer.getTree().setLayoutData(layoutData);

+		modelViewer.setContentProvider(new AdapterFactoryContentProvider(

+				ComrelDiagramEditorPlugin.getInstance()

+						.getItemProvidersAdapterFactory()));

+		modelViewer.setLabelProvider(new AdapterFactoryLabelProvider(

+				ComrelDiagramEditorPlugin.getInstance()

+						.getItemProvidersAdapterFactory()));

+		if (selectedModelElement != null) {

+			modelViewer.setInput(selectedModelElement.eResource());

+			modelViewer.setSelection(new StructuredSelection(

+					selectedModelElement));

+		}

+		modelViewer

+				.addSelectionChangedListener(new ISelectionChangedListener() {

+					public void selectionChanged(SelectionChangedEvent event) {

+						ModelElementSelectionPage.this

+								.updateSelection((IStructuredSelection) event

+										.getSelection());

+					}

+				});

+

+		setPageComplete(validatePage());

+	}

+

+	/**

+	 * Override to provide custom model element description.

+	 * @generated

+	 */

+	protected String getSelectionTitle() {

+		return Messages.ModelElementSelectionPageMessage;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void updateSelection(IStructuredSelection selection) {

+		selectedModelElement = null;

+		if (selection.size() == 1) {

+			Object selectedElement = selection.getFirstElement();

+			if (selectedElement instanceof IWrapperItemProvider) {

+				selectedElement = ((IWrapperItemProvider) selectedElement)

+						.getValue();

+			}

+			if (selectedElement instanceof FeatureMap.Entry) {

+				selectedElement = ((FeatureMap.Entry) selectedElement)

+						.getValue();

+			}

+			if (selectedElement instanceof EObject) {

+				selectedModelElement = (EObject) selectedElement;

+			}

+		}

+		setPageComplete(validatePage());

+	}

+

+	/**

+	 * Override to provide specific validation of the selected model element.

+	 * @generated

+	 */

+	protected boolean validatePage() {

+		return true;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ValidateAction.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ValidateAction.java
new file mode 100644
index 0000000..c2b72eb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/ValidateAction.java
@@ -0,0 +1,300 @@
+/*

+ * 

+ */

+package comrel.diagram.part;

+

+import java.lang.reflect.InvocationTargetException;

+import java.util.ArrayList;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.core.runtime.NullProgressMonitor;

+import org.eclipse.emf.common.util.Diagnostic;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.util.Diagnostician;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.emf.validation.model.EvaluationMode;

+import org.eclipse.emf.validation.model.IConstraintStatus;

+import org.eclipse.emf.validation.service.IBatchValidator;

+import org.eclipse.emf.validation.service.ModelValidationService;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gef.EditPartViewer;

+import org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;

+import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.action.Action;

+import org.eclipse.jface.operation.IRunnableWithProgress;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation;

+

+import comrel.diagram.providers.ComrelMarkerNavigationProvider;

+import comrel.diagram.providers.ComrelValidationProvider;

+

+/**

+ * @generated

+ */

+public class ValidateAction extends Action {

+

+	/**

+	 * @generated

+	 */

+	private IWorkbenchPage page;

+

+	/**

+	 * @generated

+	 */

+	public ValidateAction(IWorkbenchPage page) {

+		setText(Messages.ValidateActionMessage);

+		this.page = page;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void run() {

+		IWorkbenchPart workbenchPart = page.getActivePart();

+		if (workbenchPart instanceof IDiagramWorkbenchPart) {

+			final IDiagramWorkbenchPart part = (IDiagramWorkbenchPart) workbenchPart;

+			try {

+				new WorkspaceModifyDelegatingOperation(

+						new IRunnableWithProgress() {

+

+							public void run(IProgressMonitor monitor)

+									throws InterruptedException,

+									InvocationTargetException {

+								runValidation(part.getDiagramEditPart(),

+										part.getDiagram());

+							}

+						}).run(new NullProgressMonitor());

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Validation action failed", e); //$NON-NLS-1$

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void runValidation(View view) {

+		try {

+			if (ComrelDiagramEditorUtil.openDiagram(view.eResource())) {

+				IEditorPart editorPart = PlatformUI.getWorkbench()

+						.getActiveWorkbenchWindow().getActivePage()

+						.getActiveEditor();

+				if (editorPart instanceof IDiagramWorkbenchPart) {

+					runValidation(

+							((IDiagramWorkbenchPart) editorPart)

+									.getDiagramEditPart(),

+							view);

+				} else {

+					runNonUIValidation(view);

+				}

+			}

+		} catch (Exception e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Validation action failed", e); //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void runNonUIValidation(View view) {

+		DiagramEditPart diagramEditPart = OffscreenEditPartFactory

+				.getInstance().createDiagramEditPart(view.getDiagram());

+		runValidation(diagramEditPart, view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void runValidation(DiagramEditPart diagramEditPart, View view) {

+		final DiagramEditPart fpart = diagramEditPart;

+		final View fview = view;

+		TransactionalEditingDomain txDomain = TransactionUtil

+				.getEditingDomain(view);

+		ComrelValidationProvider.runWithConstraints(txDomain, new Runnable() {

+

+			public void run() {

+				validate(fpart, fview);

+			}

+		});

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Diagnostic runEMFValidator(View target) {

+		if (target.isSetElement() && target.getElement() != null) {

+			return new Diagnostician() {

+

+				public String getObjectLabel(EObject eObject) {

+					return EMFCoreUtil.getQualifiedName(eObject, true);

+				}

+			}.validate(target.getElement());

+		}

+		return Diagnostic.OK_INSTANCE;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static void validate(DiagramEditPart diagramEditPart, View view) {

+		IFile target = view.eResource() != null ? WorkspaceSynchronizer

+				.getFile(view.eResource()) : null;

+		if (target != null) {

+			ComrelMarkerNavigationProvider.deleteMarkers(target);

+		}

+		Diagnostic diagnostic = runEMFValidator(view);

+		createMarkers(target, diagnostic, diagramEditPart);

+		IBatchValidator validator = (IBatchValidator) ModelValidationService

+				.getInstance().newValidator(EvaluationMode.BATCH);

+		validator.setIncludeLiveConstraints(true);

+		if (view.isSetElement() && view.getElement() != null) {

+			IStatus status = validator.validate(view.getElement());

+			createMarkers(target, status, diagramEditPart);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private static void createMarkers(IFile target, IStatus validationStatus,

+			DiagramEditPart diagramEditPart) {

+		if (validationStatus.isOK()) {

+			return;

+		}

+		final IStatus rootStatus = validationStatus;

+		List allStatuses = new ArrayList();

+		ComrelDiagramEditorUtil.LazyElement2ViewMap element2ViewMap = new ComrelDiagramEditorUtil.LazyElement2ViewMap(

+				diagramEditPart.getDiagramView(), collectTargetElements(

+						rootStatus, new HashSet<EObject>(), allStatuses));

+		for (Iterator it = allStatuses.iterator(); it.hasNext();) {

+			IConstraintStatus nextStatus = (IConstraintStatus) it.next();

+			View view = ComrelDiagramEditorUtil.findView(diagramEditPart,

+					nextStatus.getTarget(), element2ViewMap);

+			addMarker(diagramEditPart.getViewer(), target, view.eResource()

+					.getURIFragment(view), EMFCoreUtil.getQualifiedName(

+					nextStatus.getTarget(), true), nextStatus.getMessage(),

+					nextStatus.getSeverity());

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private static void createMarkers(IFile target,

+			Diagnostic emfValidationStatus, DiagramEditPart diagramEditPart) {

+		if (emfValidationStatus.getSeverity() == Diagnostic.OK) {

+			return;

+		}

+		final Diagnostic rootStatus = emfValidationStatus;

+		List allDiagnostics = new ArrayList();

+		ComrelDiagramEditorUtil.LazyElement2ViewMap element2ViewMap = new ComrelDiagramEditorUtil.LazyElement2ViewMap(

+				diagramEditPart.getDiagramView(), collectTargetElements(

+						rootStatus, new HashSet<EObject>(), allDiagnostics));

+		for (Iterator it = emfValidationStatus.getChildren().iterator(); it

+				.hasNext();) {

+			Diagnostic nextDiagnostic = (Diagnostic) it.next();

+			List data = nextDiagnostic.getData();

+			if (data != null && !data.isEmpty()

+					&& data.get(0) instanceof EObject) {

+				EObject element = (EObject) data.get(0);

+				View view = ComrelDiagramEditorUtil.findView(diagramEditPart,

+						element, element2ViewMap);

+				addMarker(

+						diagramEditPart.getViewer(),

+						target,

+						view.eResource().getURIFragment(view),

+						EMFCoreUtil.getQualifiedName(element, true),

+						nextDiagnostic.getMessage(),

+						diagnosticToStatusSeverity(nextDiagnostic.getSeverity()));

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private static void addMarker(EditPartViewer viewer, IFile target,

+			String elementId, String location, String message,

+			int statusSeverity) {

+		if (target == null) {

+			return;

+		}

+		ComrelMarkerNavigationProvider.addMarker(target, elementId, location,

+				message, statusSeverity);

+	}

+

+	/**

+	 * @generated

+	 */

+	private static int diagnosticToStatusSeverity(int diagnosticSeverity) {

+		if (diagnosticSeverity == Diagnostic.OK) {

+			return IStatus.OK;

+		} else if (diagnosticSeverity == Diagnostic.INFO) {

+			return IStatus.INFO;

+		} else if (diagnosticSeverity == Diagnostic.WARNING) {

+			return IStatus.WARNING;

+		} else if (diagnosticSeverity == Diagnostic.ERROR

+				|| diagnosticSeverity == Diagnostic.CANCEL) {

+			return IStatus.ERROR;

+		}

+		return IStatus.INFO;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Set<EObject> collectTargetElements(IStatus status,

+			Set<EObject> targetElementCollector, List allConstraintStatuses) {

+		if (status instanceof IConstraintStatus) {

+			targetElementCollector

+					.add(((IConstraintStatus) status).getTarget());

+			allConstraintStatuses.add(status);

+		}

+		if (status.isMultiStatus()) {

+			IStatus[] children = status.getChildren();

+			for (int i = 0; i < children.length; i++) {

+				collectTargetElements(children[i], targetElementCollector,

+						allConstraintStatuses);

+			}

+		}

+		return targetElementCollector;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Set<EObject> collectTargetElements(Diagnostic diagnostic,

+			Set<EObject> targetElementCollector, List allDiagnostics) {

+		List data = diagnostic.getData();

+		EObject target = null;

+		if (data != null && !data.isEmpty() && data.get(0) instanceof EObject) {

+			target = (EObject) data.get(0);

+			targetElementCollector.add(target);

+			allDiagnostics.add(diagnostic);

+		}

+		if (diagnostic.getChildren() != null

+				&& !diagnostic.getChildren().isEmpty()) {

+			for (Iterator it = diagnostic.getChildren().iterator(); it

+					.hasNext();) {

+				collectTargetElements((Diagnostic) it.next(),

+						targetElementCollector, allDiagnostics);

+			}

+		}

+		return targetElementCollector;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/ElementTypeWithId.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/ElementTypeWithId.java
new file mode 100644
index 0000000..f2f7dab
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/ElementTypeWithId.java
@@ -0,0 +1,94 @@
+package comrel.diagram.part.custom;

+

+import java.net.URL;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.gmf.runtime.common.core.command.ICommand;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.edithelper.IEditHelper;

+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;

+

+

+/**

+ * Neues ElementTyp mit dem Attribut refId

+ * @author Gerrit

+ *

+ */

+public class ElementTypeWithId implements IElementType {

+

+	final String refId;

+	final IElementType iElementType;

+	

+	public ElementTypeWithId(String refId, IElementType iElementType){

+		this.refId=refId;

+		this.iElementType=iElementType;

+	}

+	

+	@Override

+	public boolean canEdit(IEditCommandRequest req) {

+		

+		return iElementType.canEdit(req);

+	}

+

+	@Override

+	public IElementType[] getAllSuperTypes() {

+		return iElementType.getAllSuperTypes();

+	}

+

+	@Override

+	public String getDisplayName() {

+		return iElementType.getDisplayName();

+	}

+

+	@Override

+	public EClass getEClass() {

+		return iElementType.getEClass();

+	}

+

+	@Override

+	public ICommand getEditCommand(IEditCommandRequest request) {

+		return iElementType.getEditCommand(request);

+	}

+

+	@Override

+	public IEditHelper getEditHelper() {

+		return iElementType.getEditHelper();

+	}

+

+	@Override

+	public URL getIconURL() {

+		return iElementType.getIconURL();

+	}

+

+	@Override

+	public String getId() {

+		return iElementType.getId();

+	}

+

+	@Override

+	public Object getAdapter(Class adapter) {

+		return iElementType.getAdapter(adapter);

+	}

+

+

+	@Override

+	public boolean equals(Object obj) {

+		return iElementType.equals(obj);

+	}

+

+

+	@Override

+	public int hashCode() {

+		return iElementType.hashCode();

+	}

+

+	@Override

+	public String toString() {

+		return iElementType.toString();

+	}

+

+	public String getRefId(){

+		return this.refId;

+	}

+	

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/ToolEntryComparator.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/ToolEntryComparator.java
new file mode 100644
index 0000000..2693ec8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/ToolEntryComparator.java
@@ -0,0 +1,27 @@
+package comrel.diagram.part.custom;

+

+import java.util.Comparator;

+

+import org.eclipse.gef.palette.ToolEntry;

+

+/**

+ * Comparator zum sortieren von ToolEntrys

+ * @author Gerrit

+ *

+ */

+public class ToolEntryComparator implements Comparator<ToolEntry> {

+

+	@Override

+	public int compare(ToolEntry arg0, ToolEntry arg1) {

+		int result = 0;

+		result = arg0.getLabel().compareTo(arg1.getLabel());

+		if(result == 0) {

+			result = arg0.getDescription().compareTo(arg1.getDescription());

+		}

+		if(result == 0) {

+			result = arg0.getId().compareTo(arg1.getId());

+		}

+		return result;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/UnspecifiedTypeCreationToolWithUnitId.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/UnspecifiedTypeCreationToolWithUnitId.java
new file mode 100644
index 0000000..d4db5d7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/part/custom/UnspecifiedTypeCreationToolWithUnitId.java
@@ -0,0 +1,37 @@
+package comrel.diagram.part.custom;

+

+import java.util.List;

+

+import org.eclipse.gef.Request;

+import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeCreationTool;

+

+import comrel.diagram.part.ComrelPaletteFactory;

+

+/**

+ * erstellt einen unspezifiziertes CreationTool mit UnitId

+ * @author Gerrit

+ *

+ */

+public class UnspecifiedTypeCreationToolWithUnitId extends UnspecifiedTypeCreationTool {

+

+	String unitId ="";

+	

+	public UnspecifiedTypeCreationToolWithUnitId(List elementTypes, String unitId) {

+		super(elementTypes);

+		this.unitId = unitId;

+	}

+	

+	public String getUnitId(){

+		return this.unitId;

+	}

+	

+	/**

+	 * Erstellt einen Request, fügt ihm vorher noch die UNIT_ID hinzu

+	 */

+	protected Request createTargetRequest() {

+		Request request = super.createTargetRequest();

+		request.getExtendedData().put(ComrelPaletteFactory.UNIT_ID, unitId);

+		return request;

+	}

+	

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramAppearancePreferencePage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramAppearancePreferencePage.java
new file mode 100644
index 0000000..ff220e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramAppearancePreferencePage.java
@@ -0,0 +1,22 @@
+/*

+ * 

+ */

+package comrel.diagram.preferences;

+

+import org.eclipse.gmf.runtime.diagram.ui.preferences.AppearancePreferencePage;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class DiagramAppearancePreferencePage extends AppearancePreferencePage {

+

+	/**

+	 * @generated

+	 */

+	public DiagramAppearancePreferencePage() {

+		setPreferenceStore(ComrelDiagramEditorPlugin.getInstance()

+				.getPreferenceStore());

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramConnectionsPreferencePage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramConnectionsPreferencePage.java
new file mode 100644
index 0000000..44e632d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramConnectionsPreferencePage.java
@@ -0,0 +1,22 @@
+/*

+ * 

+ */

+package comrel.diagram.preferences;

+

+import org.eclipse.gmf.runtime.diagram.ui.preferences.ConnectionsPreferencePage;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class DiagramConnectionsPreferencePage extends ConnectionsPreferencePage {

+

+	/**

+	 * @generated

+	 */

+	public DiagramConnectionsPreferencePage() {

+		setPreferenceStore(ComrelDiagramEditorPlugin.getInstance()

+				.getPreferenceStore());

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramGeneralPreferencePage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramGeneralPreferencePage.java
new file mode 100644
index 0000000..f120ca9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramGeneralPreferencePage.java
@@ -0,0 +1,22 @@
+/*

+ * 

+ */

+package comrel.diagram.preferences;

+

+import org.eclipse.gmf.runtime.diagram.ui.preferences.DiagramsPreferencePage;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class DiagramGeneralPreferencePage extends DiagramsPreferencePage {

+

+	/**

+	 * @generated

+	 */

+	public DiagramGeneralPreferencePage() {

+		setPreferenceStore(ComrelDiagramEditorPlugin.getInstance()

+				.getPreferenceStore());

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramPreferenceInitializer.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramPreferenceInitializer.java
new file mode 100644
index 0000000..2c7ff8e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramPreferenceInitializer.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.preferences;

+

+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;

+import org.eclipse.jface.preference.IPreferenceStore;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class DiagramPreferenceInitializer extends AbstractPreferenceInitializer {

+

+	/**

+	 * @generated

+	 */

+	public void initializeDefaultPreferences() {

+		IPreferenceStore store = getPreferenceStore();

+		DiagramGeneralPreferencePage.initDefaults(store);

+		DiagramAppearancePreferencePage.initDefaults(store);

+		DiagramConnectionsPreferencePage.initDefaults(store);

+		DiagramPrintingPreferencePage.initDefaults(store);

+		DiagramRulersAndGridPreferencePage.initDefaults(store);

+

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IPreferenceStore getPreferenceStore() {

+		return ComrelDiagramEditorPlugin.getInstance().getPreferenceStore();

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramPrintingPreferencePage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramPrintingPreferencePage.java
new file mode 100644
index 0000000..5bbffc2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramPrintingPreferencePage.java
@@ -0,0 +1,22 @@
+/*

+ * 

+ */

+package comrel.diagram.preferences;

+

+import org.eclipse.gmf.runtime.diagram.ui.preferences.PrintingPreferencePage;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class DiagramPrintingPreferencePage extends PrintingPreferencePage {

+

+	/**

+	 * @generated

+	 */

+	public DiagramPrintingPreferencePage() {

+		setPreferenceStore(ComrelDiagramEditorPlugin.getInstance()

+				.getPreferenceStore());

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramRulersAndGridPreferencePage.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramRulersAndGridPreferencePage.java
new file mode 100644
index 0000000..d5b0e9e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/preferences/DiagramRulersAndGridPreferencePage.java
@@ -0,0 +1,22 @@
+/*

+ * 

+ */

+package comrel.diagram.preferences;

+

+import org.eclipse.gmf.runtime.diagram.ui.preferences.RulerGridPreferencePage;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class DiagramRulersAndGridPreferencePage extends RulerGridPreferencePage {

+

+	/**

+	 * @generated

+	 */

+	public DiagramRulersAndGridPreferencePage() {

+		setPreferenceStore(ComrelDiagramEditorPlugin.getInstance()

+				.getPreferenceStore());

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelEditPartProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelEditPartProvider.java
new file mode 100644
index 0000000..f60e6ff
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelEditPartProvider.java
@@ -0,0 +1,146 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import java.lang.ref.WeakReference;

+

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.EditPartFactory;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.services.editpart.AbstractEditPartProvider;

+import org.eclipse.gmf.runtime.diagram.ui.services.editpart.CreateGraphicEditPartOperation;

+import org.eclipse.gmf.runtime.diagram.ui.services.editpart.IEditPartOperation;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.edit.parts.ComrelEditPartFactory;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelEditPartProvider extends AbstractEditPartProvider {

+

+	/**

+	 * @generated

+	 */

+	private EditPartFactory factory;

+

+	/**

+	 * @generated

+	 */

+	private boolean allowCaching;

+

+	/**

+	 * @generated

+	 */

+	private WeakReference cachedPart;

+

+	/**

+	 * @generated

+	 */

+	private WeakReference cachedView;

+

+	/**

+	 * @generated

+	 */

+	public ComrelEditPartProvider() {

+		setFactory(new ComrelEditPartFactory());

+		setAllowCaching(true);

+	}

+

+	/**

+	 * @generated

+	 */

+	public final EditPartFactory getFactory() {

+		return factory;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected void setFactory(EditPartFactory factory) {

+		this.factory = factory;

+	}

+

+	/**

+	 * @generated

+	 */

+	public final boolean isAllowCaching() {

+		return allowCaching;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected synchronized void setAllowCaching(boolean allowCaching) {

+		this.allowCaching = allowCaching;

+		if (!allowCaching) {

+			cachedPart = null;

+			cachedView = null;

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IGraphicalEditPart createEditPart(View view) {

+		EditPart part = factory.createEditPart(null, view);

+		if (part instanceof IGraphicalEditPart) {

+			return (IGraphicalEditPart) part;

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IGraphicalEditPart getCachedPart(View view) {

+		if (cachedView != null && cachedView.get() == view) {

+			return (IGraphicalEditPart) cachedPart.get();

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public synchronized IGraphicalEditPart createGraphicEditPart(View view) {

+		if (isAllowCaching()) {

+			IGraphicalEditPart part = getCachedPart(view);

+			cachedPart = null;

+			cachedView = null;

+			if (part != null) {

+				return part;

+			}

+		}

+		return createEditPart(view);

+	}

+

+	/**

+	 * @generated

+	 */

+	public synchronized boolean provides(IOperation operation) {

+		if (operation instanceof CreateGraphicEditPartOperation) {

+			View view = ((IEditPartOperation) operation).getView();

+			if (!CompositeRefactoringEditPart.MODEL_ID

+					.equals(ComrelVisualIDRegistry.getModelID(view))) {

+				return false;

+			}

+			if (isAllowCaching() && getCachedPart(view) != null) {

+				return true;

+			}

+			IGraphicalEditPart part = createEditPart(view);

+			if (part != null) {

+				if (isAllowCaching()) {

+					cachedPart = new WeakReference(part);

+					cachedView = new WeakReference(view);

+				}

+				return true;

+			}

+		}

+		return false;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelElementTypes.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelElementTypes.java
new file mode 100644
index 0000000..c8b4df9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelElementTypes.java
@@ -0,0 +1,1171 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import java.util.HashSet;

+import java.util.IdentityHashMap;

+import java.util.Map;

+import java.util.Set;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EClassifier;

+import org.eclipse.emf.ecore.ENamedElement;

+import org.eclipse.emf.ecore.EStructuralFeature;

+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.jface.resource.ImageDescriptor;

+import org.eclipse.jface.resource.ImageRegistry;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnit2EditPart;

+import comrel.diagram.edit.parts.AtomicUnit3EditPart;

+import comrel.diagram.edit.parts.AtomicUnit4EditPart;

+import comrel.diagram.edit.parts.AtomicUnit5EditPart;

+import comrel.diagram.edit.parts.AtomicUnit6EditPart;

+import comrel.diagram.edit.parts.AtomicUnit7EditPart;

+import comrel.diagram.edit.parts.AtomicUnitEditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitEditPart;

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.edit.parts.ConditionCheckEditPart;

+import comrel.diagram.edit.parts.ConditionalUnit2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnit7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitEditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnit5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitEditPart;

+import comrel.diagram.edit.parts.MultiInputPort2EditPart;

+import comrel.diagram.edit.parts.MultiInputPort3EditPart;

+import comrel.diagram.edit.parts.MultiInputPort4EditPart;

+import comrel.diagram.edit.parts.MultiInputPort5EditPart;

+import comrel.diagram.edit.parts.MultiInputPort6EditPart;

+import comrel.diagram.edit.parts.MultiInputPort7EditPart;

+import comrel.diagram.edit.parts.MultiInputPort8EditPart;

+import comrel.diagram.edit.parts.MultiInputPort9EditPart;

+import comrel.diagram.edit.parts.MultiInputPortEditPart;

+import comrel.diagram.edit.parts.MultiOutputPort2EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortEditPart;

+import comrel.diagram.edit.parts.MultiPortMappingEditPart;

+import comrel.diagram.edit.parts.MultiSinglePortMappingEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitEditPart;

+import comrel.diagram.edit.parts.SequentialUnit2EditPart;

+import comrel.diagram.edit.parts.SequentialUnit3EditPart;

+import comrel.diagram.edit.parts.SequentialUnit4EditPart;

+import comrel.diagram.edit.parts.SequentialUnit5EditPart;

+import comrel.diagram.edit.parts.SequentialUnit6EditPart;

+import comrel.diagram.edit.parts.SequentialUnit7EditPart;

+import comrel.diagram.edit.parts.SequentialUnitEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnit5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitEditPart;

+import comrel.diagram.edit.parts.SingleInputPort2EditPart;

+import comrel.diagram.edit.parts.SingleInputPort3EditPart;

+import comrel.diagram.edit.parts.SingleInputPort4EditPart;

+import comrel.diagram.edit.parts.SingleInputPort5EditPart;

+import comrel.diagram.edit.parts.SingleInputPort6EditPart;

+import comrel.diagram.edit.parts.SingleInputPort7EditPart;

+import comrel.diagram.edit.parts.SingleInputPort8EditPart;

+import comrel.diagram.edit.parts.SingleInputPort9EditPart;

+import comrel.diagram.edit.parts.SingleInputPortEditPart;

+import comrel.diagram.edit.parts.SingleOutputPort2EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortEditPart;

+import comrel.diagram.edit.parts.SinglePortMappingEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnit7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitEditPart;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class ComrelElementTypes {

+

+	/**

+	 * @generated

+	 */

+	private ComrelElementTypes() {

+	}

+

+	/**

+	 * @generated

+	 */

+	private static Map<IElementType, ENamedElement> elements;

+

+	/**

+	 * @generated

+	 */

+	private static ImageRegistry imageRegistry;

+

+	/**

+	 * @generated

+	 */

+	private static Set<IElementType> KNOWN_ELEMENT_TYPES;

+

+	/**

+	 * @generated

+	 */

+	public static final IElementType CompositeRefactoring_1000 = getElementType("comrel.diagram.CompositeRefactoring_1000"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_2001 = getElementType("comrel.diagram.SingleInputPort_2001"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_2002 = getElementType("comrel.diagram.CartesianQueuedUnit_2002"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_2003 = getElementType("comrel.diagram.ParallelQueuedUnit_2003"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_2004 = getElementType("comrel.diagram.SingleQueuedUnit_2004"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_2005 = getElementType("comrel.diagram.SequentialUnit_2005"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_2006 = getElementType("comrel.diagram.ConditionalUnit_2006"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_2007 = getElementType("comrel.diagram.AtomicUnit_2007"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3001 = getElementType("comrel.diagram.SingleInputPort_3001"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3002 = getElementType("comrel.diagram.MultiInputPort_3002"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_3003 = getElementType("comrel.diagram.CartesianQueuedUnit_3003"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_3004 = getElementType("comrel.diagram.ParallelQueuedUnit_3004"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3005 = getElementType("comrel.diagram.SingleInputPort_3005"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3006 = getElementType("comrel.diagram.MultiInputPort_3006"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_3007 = getElementType("comrel.diagram.CartesianQueuedUnit_3007"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFeatureUnit_3008 = getElementType("comrel.diagram.SingleFeatureUnit_3008"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3009 = getElementType("comrel.diagram.SingleInputPort_3009"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3010 = getElementType("comrel.diagram.MultiInputPort_3010"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleOutputPort_3011 = getElementType("comrel.diagram.SingleOutputPort_3011"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFeatureUnit_3012 = getElementType("comrel.diagram.MultiFeatureUnit_3012"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3013 = getElementType("comrel.diagram.SingleInputPort_3013"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3014 = getElementType("comrel.diagram.MultiInputPort_3014"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiOutputPort_3015 = getElementType("comrel.diagram.MultiOutputPort_3015"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFilterUnit_3016 = getElementType("comrel.diagram.SingleFilterUnit_3016"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3017 = getElementType("comrel.diagram.MultiInputPort_3017"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleOutputPort_3018 = getElementType("comrel.diagram.SingleOutputPort_3018"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFilterUnit_3019 = getElementType("comrel.diagram.MultiFilterUnit_3019"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3020 = getElementType("comrel.diagram.MultiInputPort_3020"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiOutputPort_3021 = getElementType("comrel.diagram.MultiOutputPort_3021"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_3022 = getElementType("comrel.diagram.SingleQueuedUnit_3022"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3023 = getElementType("comrel.diagram.SingleInputPort_3023"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3024 = getElementType("comrel.diagram.MultiInputPort_3024"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_3025 = getElementType("comrel.diagram.CartesianQueuedUnit_3025"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_3026 = getElementType("comrel.diagram.SequentialUnit_3026"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3027 = getElementType("comrel.diagram.SingleInputPort_3027"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3028 = getElementType("comrel.diagram.MultiInputPort_3028"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_3029 = getElementType("comrel.diagram.CartesianQueuedUnit_3029"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_3030 = getElementType("comrel.diagram.ConditionalUnit_3030"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3031 = getElementType("comrel.diagram.SingleInputPort_3031"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiInputPort_3032 = getElementType("comrel.diagram.MultiInputPort_3032"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_3033 = getElementType("comrel.diagram.CartesianQueuedUnit_3033"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_3034 = getElementType("comrel.diagram.AtomicUnit_3034"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleInputPort_3035 = getElementType("comrel.diagram.SingleInputPort_3035"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_3036 = getElementType("comrel.diagram.ParallelQueuedUnit_3036"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_3037 = getElementType("comrel.diagram.ParallelQueuedUnit_3037"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFeatureUnit_3038 = getElementType("comrel.diagram.SingleFeatureUnit_3038"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFeatureUnit_3039 = getElementType("comrel.diagram.MultiFeatureUnit_3039"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFilterUnit_3040 = getElementType("comrel.diagram.SingleFilterUnit_3040"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFilterUnit_3041 = getElementType("comrel.diagram.MultiFilterUnit_3041"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_3042 = getElementType("comrel.diagram.SingleQueuedUnit_3042"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_3043 = getElementType("comrel.diagram.ParallelQueuedUnit_3043"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_3044 = getElementType("comrel.diagram.SequentialUnit_3044"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_3045 = getElementType("comrel.diagram.ParallelQueuedUnit_3045"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_3046 = getElementType("comrel.diagram.ConditionalUnit_3046"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType CartesianQueuedUnit_3047 = getElementType("comrel.diagram.CartesianQueuedUnit_3047"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ParallelQueuedUnit_3048 = getElementType("comrel.diagram.ParallelQueuedUnit_3048"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_3049 = getElementType("comrel.diagram.AtomicUnit_3049"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFeatureUnit_3050 = getElementType("comrel.diagram.SingleFeatureUnit_3050"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFeatureUnit_3051 = getElementType("comrel.diagram.MultiFeatureUnit_3051"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFilterUnit_3052 = getElementType("comrel.diagram.SingleFilterUnit_3052"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFilterUnit_3053 = getElementType("comrel.diagram.MultiFilterUnit_3053"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_3054 = getElementType("comrel.diagram.SingleQueuedUnit_3054"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFeatureUnit_3055 = getElementType("comrel.diagram.SingleFeatureUnit_3055"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFeatureUnit_3056 = getElementType("comrel.diagram.MultiFeatureUnit_3056"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFilterUnit_3057 = getElementType("comrel.diagram.SingleFilterUnit_3057"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFilterUnit_3058 = getElementType("comrel.diagram.MultiFilterUnit_3058"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_3059 = getElementType("comrel.diagram.SingleQueuedUnit_3059"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_3060 = getElementType("comrel.diagram.SequentialUnit_3060"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFeatureUnit_3061 = getElementType("comrel.diagram.SingleFeatureUnit_3061"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFeatureUnit_3062 = getElementType("comrel.diagram.MultiFeatureUnit_3062"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleFilterUnit_3063 = getElementType("comrel.diagram.SingleFilterUnit_3063"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiFilterUnit_3064 = getElementType("comrel.diagram.MultiFilterUnit_3064"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_3065 = getElementType("comrel.diagram.SingleQueuedUnit_3065"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_3066 = getElementType("comrel.diagram.ConditionalUnit_3066"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SingleQueuedUnit_3067 = getElementType("comrel.diagram.SingleQueuedUnit_3067"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_3068 = getElementType("comrel.diagram.AtomicUnit_3068"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_3069 = getElementType("comrel.diagram.SequentialUnit_3069"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_3070 = getElementType("comrel.diagram.SequentialUnit_3070"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_3071 = getElementType("comrel.diagram.ConditionalUnit_3071"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_3072 = getElementType("comrel.diagram.ConditionalUnit_3072"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SequentialUnit_3073 = getElementType("comrel.diagram.SequentialUnit_3073"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_3074 = getElementType("comrel.diagram.AtomicUnit_3074"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionalUnit_3075 = getElementType("comrel.diagram.ConditionalUnit_3075"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType ConditionCheck_3076 = getElementType("comrel.diagram.ConditionCheck_3076"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_3077 = getElementType("comrel.diagram.AtomicUnit_3077"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType AtomicUnit_3078 = getElementType("comrel.diagram.AtomicUnit_3078"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType SinglePortMapping_4001 = getElementType("comrel.diagram.SinglePortMapping_4001"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiPortMapping_4002 = getElementType("comrel.diagram.MultiPortMapping_4002"); //$NON-NLS-1$

+	/**

+	 * @generated

+	 */

+	public static final IElementType MultiSinglePortMapping_4003 = getElementType("comrel.diagram.MultiSinglePortMapping_4003"); //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	private static ImageRegistry getImageRegistry() {

+		if (imageRegistry == null) {

+			imageRegistry = new ImageRegistry();

+		}

+		return imageRegistry;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static String getImageRegistryKey(ENamedElement element) {

+		return element.getName();

+	}

+

+	/**

+	 * @generated

+	 */

+	private static ImageDescriptor getProvidedImageDescriptor(

+			ENamedElement element) {

+		if (element instanceof EStructuralFeature) {

+			EStructuralFeature feature = ((EStructuralFeature) element);

+			EClass eContainingClass = feature.getEContainingClass();

+			EClassifier eType = feature.getEType();

+			if (eContainingClass != null && !eContainingClass.isAbstract()) {

+				element = eContainingClass;

+			} else if (eType instanceof EClass

+					&& !((EClass) eType).isAbstract()) {

+				element = eType;

+			}

+		}

+		if (element instanceof EClass) {

+			EClass eClass = (EClass) element;

+			if (!eClass.isAbstract()) {

+				return ComrelDiagramEditorPlugin.getInstance()

+						.getItemImageDescriptor(

+								eClass.getEPackage().getEFactoryInstance()

+										.create(eClass));

+			}

+		}

+		// TODO : support structural features

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static ImageDescriptor getImageDescriptor(ENamedElement element) {

+		String key = getImageRegistryKey(element);

+		ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key);

+		if (imageDescriptor == null) {

+			imageDescriptor = getProvidedImageDescriptor(element);

+			if (imageDescriptor == null) {

+				imageDescriptor = ImageDescriptor.getMissingImageDescriptor();

+			}

+			getImageRegistry().put(key, imageDescriptor);

+		}

+		return imageDescriptor;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static Image getImage(ENamedElement element) {

+		String key = getImageRegistryKey(element);

+		Image image = getImageRegistry().get(key);

+		if (image == null) {

+			ImageDescriptor imageDescriptor = getProvidedImageDescriptor(element);

+			if (imageDescriptor == null) {

+				imageDescriptor = ImageDescriptor.getMissingImageDescriptor();

+			}

+			getImageRegistry().put(key, imageDescriptor);

+			image = getImageRegistry().get(key);

+		}

+		return image;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static ImageDescriptor getImageDescriptor(IAdaptable hint) {

+		ENamedElement element = getElement(hint);

+		if (element == null) {

+			return null;

+		}

+		return getImageDescriptor(element);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static Image getImage(IAdaptable hint) {

+		ENamedElement element = getElement(hint);

+		if (element == null) {

+			return null;

+		}

+		return getImage(element);

+	}

+

+	/**

+	 * Returns 'type' of the ecore object associated with the hint.

+	 * 

+	 * @generated

+	 */

+	public static ENamedElement getElement(IAdaptable hint) {

+		Object type = hint.getAdapter(IElementType.class);

+		if (elements == null) {

+			elements = new IdentityHashMap<IElementType, ENamedElement>();

+

+			elements.put(CompositeRefactoring_1000,

+					ComrelPackage.eINSTANCE.getCompositeRefactoring());

+

+			elements.put(SingleInputPort_2001,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(CartesianQueuedUnit_2002,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(ParallelQueuedUnit_2003,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(SingleQueuedUnit_2004,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(SequentialUnit_2005,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(ConditionalUnit_2006,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(AtomicUnit_2007,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(SingleInputPort_3001,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3002,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(CartesianQueuedUnit_3003,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(ParallelQueuedUnit_3004,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(SingleInputPort_3005,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3006,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(CartesianQueuedUnit_3007,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(SingleFeatureUnit_3008,

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit());

+

+			elements.put(SingleInputPort_3009,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3010,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(SingleOutputPort_3011,

+					ComrelPackage.eINSTANCE.getSingleOutputPort());

+

+			elements.put(MultiFeatureUnit_3012,

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit());

+

+			elements.put(SingleInputPort_3013,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3014,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(MultiOutputPort_3015,

+					ComrelPackage.eINSTANCE.getMultiOutputPort());

+

+			elements.put(SingleFilterUnit_3016,

+					ComrelPackage.eINSTANCE.getSingleFilterUnit());

+

+			elements.put(MultiInputPort_3017,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(SingleOutputPort_3018,

+					ComrelPackage.eINSTANCE.getSingleOutputPort());

+

+			elements.put(MultiFilterUnit_3019,

+					ComrelPackage.eINSTANCE.getMultiFilterUnit());

+

+			elements.put(MultiInputPort_3020,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(MultiOutputPort_3021,

+					ComrelPackage.eINSTANCE.getMultiOutputPort());

+

+			elements.put(SingleQueuedUnit_3022,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(SingleInputPort_3023,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3024,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(CartesianQueuedUnit_3025,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(SequentialUnit_3026,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(SingleInputPort_3027,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3028,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(CartesianQueuedUnit_3029,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(ConditionalUnit_3030,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(SingleInputPort_3031,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(MultiInputPort_3032,

+					ComrelPackage.eINSTANCE.getMultiInputPort());

+

+			elements.put(CartesianQueuedUnit_3033,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(AtomicUnit_3034,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(SingleInputPort_3035,

+					ComrelPackage.eINSTANCE.getSingleInputPort());

+

+			elements.put(ParallelQueuedUnit_3036,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(ParallelQueuedUnit_3037,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(SingleFeatureUnit_3038,

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit());

+

+			elements.put(MultiFeatureUnit_3039,

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit());

+

+			elements.put(SingleFilterUnit_3040,

+					ComrelPackage.eINSTANCE.getSingleFilterUnit());

+

+			elements.put(MultiFilterUnit_3041,

+					ComrelPackage.eINSTANCE.getMultiFilterUnit());

+

+			elements.put(SingleQueuedUnit_3042,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(ParallelQueuedUnit_3043,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(SequentialUnit_3044,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(ParallelQueuedUnit_3045,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(ConditionalUnit_3046,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(CartesianQueuedUnit_3047,

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit());

+

+			elements.put(ParallelQueuedUnit_3048,

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit());

+

+			elements.put(AtomicUnit_3049,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(SingleFeatureUnit_3050,

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit());

+

+			elements.put(MultiFeatureUnit_3051,

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit());

+

+			elements.put(SingleFilterUnit_3052,

+					ComrelPackage.eINSTANCE.getSingleFilterUnit());

+

+			elements.put(MultiFilterUnit_3053,

+					ComrelPackage.eINSTANCE.getMultiFilterUnit());

+

+			elements.put(SingleQueuedUnit_3054,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(SingleFeatureUnit_3055,

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit());

+

+			elements.put(MultiFeatureUnit_3056,

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit());

+

+			elements.put(SingleFilterUnit_3057,

+					ComrelPackage.eINSTANCE.getSingleFilterUnit());

+

+			elements.put(MultiFilterUnit_3058,

+					ComrelPackage.eINSTANCE.getMultiFilterUnit());

+

+			elements.put(SingleQueuedUnit_3059,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(SequentialUnit_3060,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(SingleFeatureUnit_3061,

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit());

+

+			elements.put(MultiFeatureUnit_3062,

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit());

+

+			elements.put(SingleFilterUnit_3063,

+					ComrelPackage.eINSTANCE.getSingleFilterUnit());

+

+			elements.put(MultiFilterUnit_3064,

+					ComrelPackage.eINSTANCE.getMultiFilterUnit());

+

+			elements.put(SingleQueuedUnit_3065,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(ConditionalUnit_3066,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(SingleQueuedUnit_3067,

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit());

+

+			elements.put(AtomicUnit_3068,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(SequentialUnit_3069,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(SequentialUnit_3070,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(ConditionalUnit_3071,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(ConditionalUnit_3072,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(SequentialUnit_3073,

+					ComrelPackage.eINSTANCE.getSequentialUnit());

+

+			elements.put(AtomicUnit_3074,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(ConditionalUnit_3075,

+					ComrelPackage.eINSTANCE.getConditionalUnit());

+

+			elements.put(ConditionCheck_3076,

+					ComrelPackage.eINSTANCE.getConditionCheck());

+

+			elements.put(AtomicUnit_3077,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(AtomicUnit_3078,

+					ComrelPackage.eINSTANCE.getAtomicUnit());

+

+			elements.put(SinglePortMapping_4001,

+					ComrelPackage.eINSTANCE.getSinglePortMapping());

+

+			elements.put(MultiPortMapping_4002,

+					ComrelPackage.eINSTANCE.getMultiPortMapping());

+

+			elements.put(MultiSinglePortMapping_4003,

+					ComrelPackage.eINSTANCE.getMultiSinglePortMapping());

+		}

+		return (ENamedElement) elements.get(type);

+	}

+

+	/**

+	 * @generated

+	 */

+	private static IElementType getElementType(String id) {

+		return ElementTypeRegistry.getInstance().getType(id);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static boolean isKnownElementType(IElementType elementType) {

+		if (KNOWN_ELEMENT_TYPES == null) {

+			KNOWN_ELEMENT_TYPES = new HashSet<IElementType>();

+			KNOWN_ELEMENT_TYPES.add(CompositeRefactoring_1000);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_2001);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_2002);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_2003);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_2004);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_2005);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_2006);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_2007);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3001);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3002);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_3003);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_3004);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3005);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3006);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_3007);

+			KNOWN_ELEMENT_TYPES.add(SingleFeatureUnit_3008);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3009);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3010);

+			KNOWN_ELEMENT_TYPES.add(SingleOutputPort_3011);

+			KNOWN_ELEMENT_TYPES.add(MultiFeatureUnit_3012);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3013);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3014);

+			KNOWN_ELEMENT_TYPES.add(MultiOutputPort_3015);

+			KNOWN_ELEMENT_TYPES.add(SingleFilterUnit_3016);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3017);

+			KNOWN_ELEMENT_TYPES.add(SingleOutputPort_3018);

+			KNOWN_ELEMENT_TYPES.add(MultiFilterUnit_3019);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3020);

+			KNOWN_ELEMENT_TYPES.add(MultiOutputPort_3021);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_3022);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3023);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3024);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_3025);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_3026);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3027);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3028);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_3029);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_3030);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3031);

+			KNOWN_ELEMENT_TYPES.add(MultiInputPort_3032);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_3033);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_3034);

+			KNOWN_ELEMENT_TYPES.add(SingleInputPort_3035);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_3036);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_3037);

+			KNOWN_ELEMENT_TYPES.add(SingleFeatureUnit_3038);

+			KNOWN_ELEMENT_TYPES.add(MultiFeatureUnit_3039);

+			KNOWN_ELEMENT_TYPES.add(SingleFilterUnit_3040);

+			KNOWN_ELEMENT_TYPES.add(MultiFilterUnit_3041);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_3042);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_3043);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_3044);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_3045);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_3046);

+			KNOWN_ELEMENT_TYPES.add(CartesianQueuedUnit_3047);

+			KNOWN_ELEMENT_TYPES.add(ParallelQueuedUnit_3048);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_3049);

+			KNOWN_ELEMENT_TYPES.add(SingleFeatureUnit_3050);

+			KNOWN_ELEMENT_TYPES.add(MultiFeatureUnit_3051);

+			KNOWN_ELEMENT_TYPES.add(SingleFilterUnit_3052);

+			KNOWN_ELEMENT_TYPES.add(MultiFilterUnit_3053);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_3054);

+			KNOWN_ELEMENT_TYPES.add(SingleFeatureUnit_3055);

+			KNOWN_ELEMENT_TYPES.add(MultiFeatureUnit_3056);

+			KNOWN_ELEMENT_TYPES.add(SingleFilterUnit_3057);

+			KNOWN_ELEMENT_TYPES.add(MultiFilterUnit_3058);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_3059);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_3060);

+			KNOWN_ELEMENT_TYPES.add(SingleFeatureUnit_3061);

+			KNOWN_ELEMENT_TYPES.add(MultiFeatureUnit_3062);

+			KNOWN_ELEMENT_TYPES.add(SingleFilterUnit_3063);

+			KNOWN_ELEMENT_TYPES.add(MultiFilterUnit_3064);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_3065);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_3066);

+			KNOWN_ELEMENT_TYPES.add(SingleQueuedUnit_3067);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_3068);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_3069);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_3070);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_3071);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_3072);

+			KNOWN_ELEMENT_TYPES.add(SequentialUnit_3073);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_3074);

+			KNOWN_ELEMENT_TYPES.add(ConditionalUnit_3075);

+			KNOWN_ELEMENT_TYPES.add(ConditionCheck_3076);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_3077);

+			KNOWN_ELEMENT_TYPES.add(AtomicUnit_3078);

+			KNOWN_ELEMENT_TYPES.add(SinglePortMapping_4001);

+			KNOWN_ELEMENT_TYPES.add(MultiPortMapping_4002);

+			KNOWN_ELEMENT_TYPES.add(MultiSinglePortMapping_4003);

+		}

+		return KNOWN_ELEMENT_TYPES.contains(elementType);

+	}

+

+	/**

+	 * @generated

+	 */

+	public static IElementType getElementType(int visualID) {

+		switch (visualID) {

+		case CompositeRefactoringEditPart.VISUAL_ID:

+			return CompositeRefactoring_1000;

+		case SingleInputPortEditPart.VISUAL_ID:

+			return SingleInputPort_2001;

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return CartesianQueuedUnit_2002;

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return ParallelQueuedUnit_2003;

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return SingleQueuedUnit_2004;

+		case SequentialUnitEditPart.VISUAL_ID:

+			return SequentialUnit_2005;

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return ConditionalUnit_2006;

+		case AtomicUnitEditPart.VISUAL_ID:

+			return AtomicUnit_2007;

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return SingleInputPort_3001;

+		case MultiInputPortEditPart.VISUAL_ID:

+			return MultiInputPort_3002;

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return CartesianQueuedUnit_3003;

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return ParallelQueuedUnit_3004;

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return SingleInputPort_3005;

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return MultiInputPort_3006;

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return CartesianQueuedUnit_3007;

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return SingleFeatureUnit_3008;

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return SingleInputPort_3009;

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return MultiInputPort_3010;

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return SingleOutputPort_3011;

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return MultiFeatureUnit_3012;

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return SingleInputPort_3013;

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return MultiInputPort_3014;

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return MultiOutputPort_3015;

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return SingleFilterUnit_3016;

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return MultiInputPort_3017;

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return SingleOutputPort_3018;

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return MultiFilterUnit_3019;

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return MultiInputPort_3020;

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return MultiOutputPort_3021;

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return SingleQueuedUnit_3022;

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return SingleInputPort_3023;

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return MultiInputPort_3024;

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return CartesianQueuedUnit_3025;

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return SequentialUnit_3026;

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return SingleInputPort_3027;

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return MultiInputPort_3028;

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return CartesianQueuedUnit_3029;

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return ConditionalUnit_3030;

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return SingleInputPort_3031;

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return MultiInputPort_3032;

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return CartesianQueuedUnit_3033;

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return AtomicUnit_3034;

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return SingleInputPort_3035;

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return ParallelQueuedUnit_3036;

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return ParallelQueuedUnit_3037;

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return SingleFeatureUnit_3038;

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return MultiFeatureUnit_3039;

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return SingleFilterUnit_3040;

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return MultiFilterUnit_3041;

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return SingleQueuedUnit_3042;

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return ParallelQueuedUnit_3043;

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return SequentialUnit_3044;

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return ParallelQueuedUnit_3045;

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return ConditionalUnit_3046;

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return CartesianQueuedUnit_3047;

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return ParallelQueuedUnit_3048;

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return AtomicUnit_3049;

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return SingleFeatureUnit_3050;

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return MultiFeatureUnit_3051;

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return SingleFilterUnit_3052;

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return MultiFilterUnit_3053;

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return SingleQueuedUnit_3054;

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return SingleFeatureUnit_3055;

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return MultiFeatureUnit_3056;

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return SingleFilterUnit_3057;

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return MultiFilterUnit_3058;

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return SingleQueuedUnit_3059;

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return SequentialUnit_3060;

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return SingleFeatureUnit_3061;

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return MultiFeatureUnit_3062;

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return SingleFilterUnit_3063;

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return MultiFilterUnit_3064;

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return SingleQueuedUnit_3065;

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return ConditionalUnit_3066;

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return SingleQueuedUnit_3067;

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return AtomicUnit_3068;

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return SequentialUnit_3069;

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return SequentialUnit_3070;

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return ConditionalUnit_3071;

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return ConditionalUnit_3072;

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return SequentialUnit_3073;

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return AtomicUnit_3074;

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return ConditionalUnit_3075;

+		case ConditionCheckEditPart.VISUAL_ID:

+			return ConditionCheck_3076;

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return AtomicUnit_3077;

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return AtomicUnit_3078;

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return SinglePortMapping_4001;

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return MultiPortMapping_4002;

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return MultiSinglePortMapping_4003;

+		}

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelIconProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelIconProvider.java
new file mode 100644
index 0000000..97ed640
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelIconProvider.java
@@ -0,0 +1,35 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.common.ui.services.icon.GetIconOperation;

+import org.eclipse.gmf.runtime.common.ui.services.icon.IIconProvider;

+import org.eclipse.swt.graphics.Image;

+

+/**

+ * @generated

+ */

+public class ComrelIconProvider extends AbstractProvider implements

+		IIconProvider {

+

+	/**

+	 * @generated

+	 */

+	public Image getIcon(IAdaptable hint, int flags) {

+		return ComrelElementTypes.getImage(hint);

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean provides(IOperation operation) {

+		if (operation instanceof GetIconOperation) {

+			return ((GetIconOperation) operation).execute(this) != null;

+		}

+		return false;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelMarkerNavigationProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelMarkerNavigationProvider.java
new file mode 100644
index 0000000..49ce2cf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelMarkerNavigationProvider.java
@@ -0,0 +1,99 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import java.util.Arrays;

+import java.util.Map;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IMarker;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;

+import org.eclipse.gmf.runtime.emf.ui.providers.marker.AbstractModelMarkerNavigationProvider;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelDiagramEditorUtil;

+

+/**

+ * @generated

+ */

+public class ComrelMarkerNavigationProvider extends

+		AbstractModelMarkerNavigationProvider {

+

+	/**

+	 * @generated

+	 */

+	public static final String MARKER_TYPE = ComrelDiagramEditorPlugin.ID

+			+ ".diagnostic"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	protected void doGotoMarker(IMarker marker) {

+		String elementId = marker

+				.getAttribute(

+						org.eclipse.gmf.runtime.common.core.resources.IMarker.ELEMENT_ID,

+						null);

+		if (elementId == null || !(getEditor() instanceof DiagramEditor)) {

+			return;

+		}

+		DiagramEditor editor = (DiagramEditor) getEditor();

+		Map editPartRegistry = editor.getDiagramGraphicalViewer()

+				.getEditPartRegistry();

+		EObject targetView = editor.getDiagram().eResource()

+				.getEObject(elementId);

+		if (targetView == null) {

+			return;

+		}

+		EditPart targetEditPart = (EditPart) editPartRegistry.get(targetView);

+		if (targetEditPart != null) {

+			ComrelDiagramEditorUtil.selectElementsInDiagram(editor,

+					Arrays.asList(new EditPart[] { targetEditPart }));

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void deleteMarkers(IResource resource) {

+		try {

+			resource.deleteMarkers(MARKER_TYPE, true, IResource.DEPTH_ZERO);

+		} catch (CoreException e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Failed to delete validation markers", e); //$NON-NLS-1$

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public static IMarker addMarker(IFile file, String elementId,

+			String location, String message, int statusSeverity) {

+		IMarker marker = null;

+		try {

+			marker = file.createMarker(MARKER_TYPE);

+			marker.setAttribute(IMarker.MESSAGE, message);

+			marker.setAttribute(IMarker.LOCATION, location);

+			marker.setAttribute(

+					org.eclipse.gmf.runtime.common.ui.resources.IMarker.ELEMENT_ID,

+					elementId);

+			int markerSeverity = IMarker.SEVERITY_INFO;

+			if (statusSeverity == IStatus.WARNING) {

+				markerSeverity = IMarker.SEVERITY_WARNING;

+			} else if (statusSeverity == IStatus.ERROR

+					|| statusSeverity == IStatus.CANCEL) {

+				markerSeverity = IMarker.SEVERITY_ERROR;

+			}

+			marker.setAttribute(IMarker.SEVERITY, markerSeverity);

+		} catch (CoreException e) {

+			ComrelDiagramEditorPlugin.getInstance().logError(

+					"Failed to create validation marker", e); //$NON-NLS-1$

+		}

+		return marker;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelModelingAssistantProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelModelingAssistantProvider.java
new file mode 100644
index 0000000..074a823
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelModelingAssistantProvider.java
@@ -0,0 +1,1699 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.List;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;

+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.ui.services.modelingassistant.ModelingAssistantProvider;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.jface.viewers.ILabelProvider;

+import org.eclipse.jface.window.Window;

+import org.eclipse.swt.widgets.Display;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.ui.dialogs.ElementListSelectionDialog;

+

+import comrel.diagram.edit.parts.*;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.Messages;

+

+/**

+ * @generated

+ */

+public class ComrelModelingAssistantProvider extends ModelingAssistantProvider {

+

+	/**

+	 * @generated

+	 */

+	public List getTypesForPopupBar(IAdaptable host) {

+		IGraphicalEditPart editPart = (IGraphicalEditPart) host

+				.getAdapter(IGraphicalEditPart.class);

+		if (editPart instanceof CompositeRefactoringEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(7);

+			types.add(ComrelElementTypes.SingleInputPort_2001);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_2002);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_2003);

+			types.add(ComrelElementTypes.SingleQueuedUnit_2004);

+			types.add(ComrelElementTypes.SequentialUnit_2005);

+			types.add(ComrelElementTypes.ConditionalUnit_2006);

+			types.add(ComrelElementTypes.AtomicUnit_2007);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof AtomicUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof SingleFeatureUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			return types;

+		}

+		if (editPart instanceof MultiFeatureUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			return types;

+		}

+		if (editPart instanceof SingleFilterUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			return types;

+		}

+		if (editPart instanceof MultiFilterUnitEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof SequentialUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnit6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof AtomicUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof SingleFeatureUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			return types;

+		}

+		if (editPart instanceof MultiFeatureUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			return types;

+		}

+		if (editPart instanceof SingleFilterUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			return types;

+		}

+		if (editPart instanceof MultiFilterUnit2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof SequentialUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnit6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnit7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3001);

+			types.add(ComrelElementTypes.MultiInputPort_3002);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnit7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3005);

+			types.add(ComrelElementTypes.MultiInputPort_3006);

+			return types;

+		}

+		if (editPart instanceof AtomicUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof SingleFeatureUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			return types;

+		}

+		if (editPart instanceof MultiFeatureUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			return types;

+		}

+		if (editPart instanceof SingleFilterUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			return types;

+		}

+		if (editPart instanceof MultiFilterUnit3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof SingleFeatureUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			return types;

+		}

+		if (editPart instanceof MultiFeatureUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			return types;

+		}

+		if (editPart instanceof SingleFilterUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			return types;

+		}

+		if (editPart instanceof MultiFilterUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof SequentialUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof SingleFeatureUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3009);

+			types.add(ComrelElementTypes.MultiInputPort_3010);

+			types.add(ComrelElementTypes.SingleOutputPort_3011);

+			return types;

+		}

+		if (editPart instanceof MultiFeatureUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(3);

+			types.add(ComrelElementTypes.SingleInputPort_3013);

+			types.add(ComrelElementTypes.MultiInputPort_3014);

+			types.add(ComrelElementTypes.MultiOutputPort_3015);

+			return types;

+		}

+		if (editPart instanceof SingleFilterUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3017);

+			types.add(ComrelElementTypes.SingleOutputPort_3018);

+			return types;

+		}

+		if (editPart instanceof MultiFilterUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.MultiInputPort_3020);

+			types.add(ComrelElementTypes.MultiOutputPort_3021);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnit6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnit7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3023);

+			types.add(ComrelElementTypes.MultiInputPort_3024);

+			return types;

+		}

+		if (editPart instanceof AtomicUnit4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof SequentialUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof SequentialUnit6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnit6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof SequentialUnit7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3027);

+			types.add(ComrelElementTypes.MultiInputPort_3028);

+			return types;

+		}

+		if (editPart instanceof AtomicUnit5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnit7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(2);

+			types.add(ComrelElementTypes.SingleInputPort_3031);

+			types.add(ComrelElementTypes.MultiInputPort_3032);

+			return types;

+		}

+		if (editPart instanceof AtomicUnit6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof AtomicUnit7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.SingleInputPort_3035);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartmentEditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment2EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3008);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3012);

+			types.add(ComrelElementTypes.SingleFilterUnit_3016);

+			types.add(ComrelElementTypes.MultiFilterUnit_3019);

+			return types;

+		}

+		if (editPart instanceof CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3003);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3004);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3022);

+			types.add(ComrelElementTypes.SequentialUnit_3026);

+			types.add(ComrelElementTypes.ConditionalUnit_3030);

+			types.add(ComrelElementTypes.AtomicUnit_3034);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment3EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment4EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment5EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment6EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3038);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3039);

+			types.add(ComrelElementTypes.SingleFilterUnit_3040);

+			types.add(ComrelElementTypes.MultiFilterUnit_3041);

+			return types;

+		}

+		if (editPart instanceof ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3007);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3037);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3042);

+			types.add(ComrelElementTypes.SequentialUnit_3044);

+			types.add(ComrelElementTypes.ConditionalUnit_3046);

+			types.add(ComrelElementTypes.AtomicUnit_3049);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3055);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3056);

+			types.add(ComrelElementTypes.SingleFilterUnit_3057);

+			types.add(ComrelElementTypes.MultiFilterUnit_3058);

+			return types;

+		}

+		if (editPart instanceof SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3025);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3043);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3059);

+			types.add(ComrelElementTypes.SequentialUnit_3060);

+			types.add(ComrelElementTypes.ConditionalUnit_3066);

+			types.add(ComrelElementTypes.AtomicUnit_3068);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3061);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3062);

+			types.add(ComrelElementTypes.SingleFilterUnit_3063);

+			types.add(ComrelElementTypes.MultiFilterUnit_3064);

+			return types;

+		}

+		if (editPart instanceof SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3029);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3045);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3065);

+			types.add(ComrelElementTypes.SequentialUnit_3070);

+			types.add(ComrelElementTypes.ConditionalUnit_3071);

+			types.add(ComrelElementTypes.AtomicUnit_3074);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitIfCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(1);

+			types.add(ComrelElementTypes.ConditionCheck_3076);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(4);

+			types.add(ComrelElementTypes.SingleFeatureUnit_3050);

+			types.add(ComrelElementTypes.MultiFeatureUnit_3051);

+			types.add(ComrelElementTypes.SingleFilterUnit_3052);

+			types.add(ComrelElementTypes.MultiFilterUnit_3053);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitThenCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3033);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3036);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3054);

+			types.add(ComrelElementTypes.SequentialUnit_3069);

+			types.add(ComrelElementTypes.ConditionalUnit_3072);

+			types.add(ComrelElementTypes.AtomicUnit_3077);

+			return types;

+		}

+		if (editPart instanceof ConditionalUnitConditionalUnitElseCompartment7EditPart) {

+			ArrayList<IElementType> types = new ArrayList<IElementType>(6);

+			types.add(ComrelElementTypes.CartesianQueuedUnit_3047);

+			types.add(ComrelElementTypes.ParallelQueuedUnit_3048);

+			types.add(ComrelElementTypes.SingleQueuedUnit_3067);

+			types.add(ComrelElementTypes.SequentialUnit_3073);

+			types.add(ComrelElementTypes.ConditionalUnit_3075);

+			types.add(ComrelElementTypes.AtomicUnit_3078);

+			return types;

+		}

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List getRelTypesOnSource(IAdaptable source) {

+		IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source

+				.getAdapter(IGraphicalEditPart.class);

+		if (sourceEditPart instanceof SingleInputPortEditPart) {

+			return ((SingleInputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort2EditPart) {

+			return ((SingleInputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPortEditPart) {

+			return ((MultiInputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort3EditPart) {

+			return ((SingleInputPort3EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort2EditPart) {

+			return ((MultiInputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort4EditPart) {

+			return ((SingleInputPort4EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort3EditPart) {

+			return ((MultiInputPort3EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleOutputPortEditPart) {

+			return ((SingleOutputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort5EditPart) {

+			return ((SingleInputPort5EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort4EditPart) {

+			return ((MultiInputPort4EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiOutputPortEditPart) {

+			return ((MultiOutputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort5EditPart) {

+			return ((MultiInputPort5EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleOutputPort2EditPart) {

+			return ((SingleOutputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort6EditPart) {

+			return ((MultiInputPort6EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiOutputPort2EditPart) {

+			return ((MultiOutputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort6EditPart) {

+			return ((SingleInputPort6EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort7EditPart) {

+			return ((MultiInputPort7EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort7EditPart) {

+			return ((SingleInputPort7EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort8EditPart) {

+			return ((MultiInputPort8EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort8EditPart) {

+			return ((SingleInputPort8EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof MultiInputPort9EditPart) {

+			return ((MultiInputPort9EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		if (sourceEditPart instanceof SingleInputPort9EditPart) {

+			return ((SingleInputPort9EditPart) sourceEditPart)

+					.getMARelTypesOnSource();

+		}

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List getRelTypesOnTarget(IAdaptable target) {

+		IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target

+				.getAdapter(IGraphicalEditPart.class);

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			return ((SingleInputPortEditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			return ((SingleInputPort2EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			return ((MultiInputPortEditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			return ((SingleInputPort3EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			return ((MultiInputPort2EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			return ((SingleInputPort4EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			return ((MultiInputPort3EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			return ((SingleInputPort5EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			return ((MultiInputPort4EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			return ((MultiInputPort5EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			return ((MultiInputPort6EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			return ((SingleInputPort6EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			return ((MultiInputPort7EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			return ((SingleInputPort7EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			return ((MultiInputPort8EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			return ((SingleInputPort8EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			return ((MultiInputPort9EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			return ((SingleInputPort9EditPart) targetEditPart)

+					.getMARelTypesOnTarget();

+		}

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List getRelTypesOnSourceAndTarget(IAdaptable source,

+			IAdaptable target) {

+		IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source

+				.getAdapter(IGraphicalEditPart.class);

+		IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target

+				.getAdapter(IGraphicalEditPart.class);

+		if (sourceEditPart instanceof SingleInputPortEditPart) {

+			return ((SingleInputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort2EditPart) {

+			return ((SingleInputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPortEditPart) {

+			return ((MultiInputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort3EditPart) {

+			return ((SingleInputPort3EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort2EditPart) {

+			return ((MultiInputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort4EditPart) {

+			return ((SingleInputPort4EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort3EditPart) {

+			return ((MultiInputPort3EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleOutputPortEditPart) {

+			return ((SingleOutputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort5EditPart) {

+			return ((SingleInputPort5EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort4EditPart) {

+			return ((MultiInputPort4EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiOutputPortEditPart) {

+			return ((MultiOutputPortEditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort5EditPart) {

+			return ((MultiInputPort5EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleOutputPort2EditPart) {

+			return ((SingleOutputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort6EditPart) {

+			return ((MultiInputPort6EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiOutputPort2EditPart) {

+			return ((MultiOutputPort2EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort6EditPart) {

+			return ((SingleInputPort6EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort7EditPart) {

+			return ((MultiInputPort7EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort7EditPart) {

+			return ((SingleInputPort7EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort8EditPart) {

+			return ((MultiInputPort8EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort8EditPart) {

+			return ((SingleInputPort8EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof MultiInputPort9EditPart) {

+			return ((MultiInputPort9EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		if (sourceEditPart instanceof SingleInputPort9EditPart) {

+			return ((SingleInputPort9EditPart) sourceEditPart)

+					.getMARelTypesOnSourceAndTarget(targetEditPart);

+		}

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List getTypesForSource(IAdaptable target,

+			IElementType relationshipType) {

+		IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target

+				.getAdapter(IGraphicalEditPart.class);

+		if (targetEditPart instanceof SingleInputPortEditPart) {

+			return ((SingleInputPortEditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort2EditPart) {

+			return ((SingleInputPort2EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPortEditPart) {

+			return ((MultiInputPortEditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort3EditPart) {

+			return ((SingleInputPort3EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort2EditPart) {

+			return ((MultiInputPort2EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort4EditPart) {

+			return ((SingleInputPort4EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort3EditPart) {

+			return ((MultiInputPort3EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort5EditPart) {

+			return ((SingleInputPort5EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort4EditPart) {

+			return ((MultiInputPort4EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort5EditPart) {

+			return ((MultiInputPort5EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort6EditPart) {

+			return ((MultiInputPort6EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort6EditPart) {

+			return ((SingleInputPort6EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort7EditPart) {

+			return ((MultiInputPort7EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort7EditPart) {

+			return ((SingleInputPort7EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort8EditPart) {

+			return ((MultiInputPort8EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort8EditPart) {

+			return ((SingleInputPort8EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof MultiInputPort9EditPart) {

+			return ((MultiInputPort9EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		if (targetEditPart instanceof SingleInputPort9EditPart) {

+			return ((SingleInputPort9EditPart) targetEditPart)

+					.getMATypesForSource(relationshipType);

+		}

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public List getTypesForTarget(IAdaptable source,

+			IElementType relationshipType) {

+		IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source

+				.getAdapter(IGraphicalEditPart.class);

+		if (sourceEditPart instanceof SingleInputPortEditPart) {

+			return ((SingleInputPortEditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort2EditPart) {

+			return ((SingleInputPort2EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPortEditPart) {

+			return ((MultiInputPortEditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort3EditPart) {

+			return ((SingleInputPort3EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort2EditPart) {

+			return ((MultiInputPort2EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort4EditPart) {

+			return ((SingleInputPort4EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort3EditPart) {

+			return ((MultiInputPort3EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleOutputPortEditPart) {

+			return ((SingleOutputPortEditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort5EditPart) {

+			return ((SingleInputPort5EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort4EditPart) {

+			return ((MultiInputPort4EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiOutputPortEditPart) {

+			return ((MultiOutputPortEditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort5EditPart) {

+			return ((MultiInputPort5EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleOutputPort2EditPart) {

+			return ((SingleOutputPort2EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort6EditPart) {

+			return ((MultiInputPort6EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiOutputPort2EditPart) {

+			return ((MultiOutputPort2EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort6EditPart) {

+			return ((SingleInputPort6EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort7EditPart) {

+			return ((MultiInputPort7EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort7EditPart) {

+			return ((SingleInputPort7EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort8EditPart) {

+			return ((MultiInputPort8EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort8EditPart) {

+			return ((SingleInputPort8EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof MultiInputPort9EditPart) {

+			return ((MultiInputPort9EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		if (sourceEditPart instanceof SingleInputPort9EditPart) {

+			return ((SingleInputPort9EditPart) sourceEditPart)

+					.getMATypesForTarget(relationshipType);

+		}

+		return Collections.EMPTY_LIST;

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject selectExistingElementForSource(IAdaptable target,

+			IElementType relationshipType) {

+		return selectExistingElement(target,

+				getTypesForSource(target, relationshipType));

+	}

+

+	/**

+	 * @generated

+	 */

+	public EObject selectExistingElementForTarget(IAdaptable source,

+			IElementType relationshipType) {

+		return selectExistingElement(source,

+				getTypesForTarget(source, relationshipType));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject selectExistingElement(IAdaptable host, Collection types) {

+		if (types.isEmpty()) {

+			return null;

+		}

+		IGraphicalEditPart editPart = (IGraphicalEditPart) host

+				.getAdapter(IGraphicalEditPart.class);

+		if (editPart == null) {

+			return null;

+		}

+		Diagram diagram = (Diagram) editPart.getRoot().getContents().getModel();

+		HashSet<EObject> elements = new HashSet<EObject>();

+		for (Iterator<EObject> it = diagram.getElement().eAllContents(); it

+				.hasNext();) {

+			EObject element = it.next();

+			if (isApplicableElement(element, types)) {

+				elements.add(element);

+			}

+		}

+		if (elements.isEmpty()) {

+			return null;

+		}

+		return selectElement((EObject[]) elements.toArray(new EObject[elements

+				.size()]));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean isApplicableElement(EObject element, Collection types) {

+		IElementType type = ElementTypeRegistry.getInstance().getElementType(

+				element);

+		return types.contains(type);

+	}

+

+	/**

+	 * @generated

+	 */

+	protected EObject selectElement(EObject[] elements) {

+		Shell shell = Display.getCurrent().getActiveShell();

+		ILabelProvider labelProvider = new AdapterFactoryLabelProvider(

+				ComrelDiagramEditorPlugin.getInstance()

+						.getItemProvidersAdapterFactory());

+		ElementListSelectionDialog dialog = new ElementListSelectionDialog(

+				shell, labelProvider);

+		dialog.setMessage(Messages.ComrelModelingAssistantProviderMessage);

+		dialog.setTitle(Messages.ComrelModelingAssistantProviderTitle);

+		dialog.setMultipleSelection(false);

+		dialog.setElements(elements);

+		EObject selected = null;

+		if (dialog.open() == Window.OK) {

+			selected = (EObject) dialog.getFirstResult();

+		}

+		return selected;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelParserProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelParserProvider.java
new file mode 100644
index 0000000..7d9fa61
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelParserProvider.java
@@ -0,0 +1,2261 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EAttribute;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.common.ui.services.parser.GetParserOperation;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;

+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserProvider;

+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.ComrelPackage;

+import comrel.diagram.edit.parts.AtomicUnitLabelType2EditPart;

+import comrel.diagram.edit.parts.AtomicUnitLabelType3EditPart;

+import comrel.diagram.edit.parts.AtomicUnitLabelType4EditPart;

+import comrel.diagram.edit.parts.AtomicUnitLabelType5EditPart;

+import comrel.diagram.edit.parts.AtomicUnitLabelType6EditPart;

+import comrel.diagram.edit.parts.AtomicUnitLabelType7EditPart;

+import comrel.diagram.edit.parts.AtomicUnitLabelTypeEditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict2EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict3EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict4EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict5EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict6EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrict7EditPart;

+import comrel.diagram.edit.parts.CartesianQueuedUnitNameTypeLblStrictEditPart;

+import comrel.diagram.edit.parts.ConditionCheckNameTypeSpecEditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameType2EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameType3EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameType4EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameType5EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameType6EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameType7EditPart;

+import comrel.diagram.edit.parts.ConditionalUnitNameTypeEditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitNameType2EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitNameType3EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitNameType4EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitNameType5EditPart;

+import comrel.diagram.edit.parts.MultiFeatureUnitNameTypeEditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitNameType2EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitNameType3EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitNameType4EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitNameType5EditPart;

+import comrel.diagram.edit.parts.MultiFilterUnitNameTypeEditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType2EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType3EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType4EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType5EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType6EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType7EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType8EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameType9EditPart;

+import comrel.diagram.edit.parts.MultiInputPortNameTypeEditPart;

+import comrel.diagram.edit.parts.MultiOutputPortNameType2EditPart;

+import comrel.diagram.edit.parts.MultiOutputPortNameTypeEditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict2EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict3EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict4EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict5EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict6EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrict7EditPart;

+import comrel.diagram.edit.parts.ParallelQueuedUnitNameTypeLblStrictEditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict2EditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict3EditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict4EditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict5EditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict6EditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrict7EditPart;

+import comrel.diagram.edit.parts.SequentialUnitNameTypeLblStrictEditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitNameType2EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitNameType3EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitNameType4EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitNameType5EditPart;

+import comrel.diagram.edit.parts.SingleFeatureUnitNameTypeEditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitNameType2EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitNameType3EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitNameType4EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitNameType5EditPart;

+import comrel.diagram.edit.parts.SingleFilterUnitNameTypeEditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType2EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType3EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType4EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType5EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType6EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType7EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType8EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameType9EditPart;

+import comrel.diagram.edit.parts.SingleInputPortNameTypeEditPart;

+import comrel.diagram.edit.parts.SingleOutputPortNameType2EditPart;

+import comrel.diagram.edit.parts.SingleOutputPortNameTypeEditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict2EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict3EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict4EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict5EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict6EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrict7EditPart;

+import comrel.diagram.edit.parts.SingleQueuedUnitNameTypeLblStrictEditPart;

+import comrel.diagram.parsers.MessageFormatParser;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelParserProvider extends AbstractProvider implements

+		IParserProvider {

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5001Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5001Parser() {

+		if (singleInputPortNameType_5001Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5001Parser = parser;

+		}

+		return singleInputPortNameType_5001Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5080Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5080Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5080Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5080Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5080Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5081Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5081Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5081Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5081Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5081Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5082Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5082Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5082Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5082Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5082Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5083Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5083Parser() {

+		if (sequentialUnitNameTypeLblStrict_5083Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5083Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5083Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5084Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5084Parser() {

+		if (conditionalUnitNameType_5084Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5084Parser = parser;

+		}

+		return conditionalUnitNameType_5084Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5085Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5085Parser() {

+		if (atomicUnitLabelType_5085Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5085Parser = parser;

+		}

+		return atomicUnitLabelType_5085Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5002Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5002Parser() {

+		if (singleInputPortNameType_5002Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5002Parser = parser;

+		}

+		return singleInputPortNameType_5002Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5003Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5003Parser() {

+		if (multiInputPortNameType_5003Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5003Parser = parser;

+		}

+		return multiInputPortNameType_5003Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5079Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5079Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5079Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5079Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5079Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5078Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5078Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5078Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5078Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5078Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5004Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5004Parser() {

+		if (singleInputPortNameType_5004Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5004Parser = parser;

+		}

+		return singleInputPortNameType_5004Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5005Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5005Parser() {

+		if (multiInputPortNameType_5005Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5005Parser = parser;

+		}

+		return multiInputPortNameType_5005Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5077Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5077Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5077Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5077Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5077Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFeatureUnitNameType_5009Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFeatureUnitNameType_5009Parser() {

+		if (singleFeatureUnitNameType_5009Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFeatureUnitNameType_5009Parser = parser;

+		}

+		return singleFeatureUnitNameType_5009Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5006Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5006Parser() {

+		if (singleInputPortNameType_5006Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5006Parser = parser;

+		}

+		return singleInputPortNameType_5006Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5007Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5007Parser() {

+		if (multiInputPortNameType_5007Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5007Parser = parser;

+		}

+		return multiInputPortNameType_5007Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleOutputPortNameType_5008Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleOutputPortNameType_5008Parser() {

+		if (singleOutputPortNameType_5008Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleOutputPortNameType_5008Parser = parser;

+		}

+		return singleOutputPortNameType_5008Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFeatureUnitNameType_5013Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFeatureUnitNameType_5013Parser() {

+		if (multiFeatureUnitNameType_5013Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFeatureUnitNameType_5013Parser = parser;

+		}

+		return multiFeatureUnitNameType_5013Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5010Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5010Parser() {

+		if (singleInputPortNameType_5010Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5010Parser = parser;

+		}

+		return singleInputPortNameType_5010Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5011Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5011Parser() {

+		if (multiInputPortNameType_5011Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5011Parser = parser;

+		}

+		return multiInputPortNameType_5011Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiOutputPortNameType_5012Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiOutputPortNameType_5012Parser() {

+		if (multiOutputPortNameType_5012Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiOutputPortNameType_5012Parser = parser;

+		}

+		return multiOutputPortNameType_5012Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFilterUnitNameType_5016Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFilterUnitNameType_5016Parser() {

+		if (singleFilterUnitNameType_5016Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFilterUnitNameType_5016Parser = parser;

+		}

+		return singleFilterUnitNameType_5016Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5014Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5014Parser() {

+		if (multiInputPortNameType_5014Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5014Parser = parser;

+		}

+		return multiInputPortNameType_5014Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleOutputPortNameType_5015Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleOutputPortNameType_5015Parser() {

+		if (singleOutputPortNameType_5015Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleOutputPortNameType_5015Parser = parser;

+		}

+		return singleOutputPortNameType_5015Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFilterUnitNameType_5019Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFilterUnitNameType_5019Parser() {

+		if (multiFilterUnitNameType_5019Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFilterUnitNameType_5019Parser = parser;

+		}

+		return multiFilterUnitNameType_5019Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5017Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5017Parser() {

+		if (multiInputPortNameType_5017Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5017Parser = parser;

+		}

+		return multiInputPortNameType_5017Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiOutputPortNameType_5018Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiOutputPortNameType_5018Parser() {

+		if (multiOutputPortNameType_5018Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiOutputPortNameType_5018Parser = parser;

+		}

+		return multiOutputPortNameType_5018Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5076Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5076Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5076Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5076Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5076Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5020Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5020Parser() {

+		if (singleInputPortNameType_5020Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5020Parser = parser;

+		}

+		return singleInputPortNameType_5020Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5021Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5021Parser() {

+		if (multiInputPortNameType_5021Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5021Parser = parser;

+		}

+		return multiInputPortNameType_5021Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5075Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5075Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5075Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5075Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5075Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5074Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5074Parser() {

+		if (sequentialUnitNameTypeLblStrict_5074Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5074Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5074Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5022Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5022Parser() {

+		if (singleInputPortNameType_5022Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5022Parser = parser;

+		}

+		return singleInputPortNameType_5022Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5023Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5023Parser() {

+		if (multiInputPortNameType_5023Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5023Parser = parser;

+		}

+		return multiInputPortNameType_5023Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5073Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5073Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5073Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5073Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5073Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5072Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5072Parser() {

+		if (conditionalUnitNameType_5072Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5072Parser = parser;

+		}

+		return conditionalUnitNameType_5072Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5024Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5024Parser() {

+		if (singleInputPortNameType_5024Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5024Parser = parser;

+		}

+		return singleInputPortNameType_5024Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiInputPortNameType_5025Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiInputPortNameType_5025Parser() {

+		if (multiInputPortNameType_5025Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiInputPortNameType_5025Parser = parser;

+		}

+		return multiInputPortNameType_5025Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5028Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5028Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5028Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5028Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5028Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5027Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5027Parser() {

+		if (atomicUnitLabelType_5027Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5027Parser = parser;

+		}

+		return atomicUnitLabelType_5027Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleInputPortNameType_5026Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleInputPortNameType_5026Parser() {

+		if (singleInputPortNameType_5026Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getPort_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleInputPortNameType_5026Parser = parser;

+		}

+		return singleInputPortNameType_5026Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5071Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5071Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5071Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5071Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5071Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5070Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5070Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5070Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5070Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5070Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFeatureUnitNameType_5029Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFeatureUnitNameType_5029Parser() {

+		if (singleFeatureUnitNameType_5029Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFeatureUnitNameType_5029Parser = parser;

+		}

+		return singleFeatureUnitNameType_5029Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFeatureUnitNameType_5030Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFeatureUnitNameType_5030Parser() {

+		if (multiFeatureUnitNameType_5030Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFeatureUnitNameType_5030Parser = parser;

+		}

+		return multiFeatureUnitNameType_5030Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFilterUnitNameType_5031Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFilterUnitNameType_5031Parser() {

+		if (singleFilterUnitNameType_5031Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFilterUnitNameType_5031Parser = parser;

+		}

+		return singleFilterUnitNameType_5031Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFilterUnitNameType_5032Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFilterUnitNameType_5032Parser() {

+		if (multiFilterUnitNameType_5032Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFilterUnitNameType_5032Parser = parser;

+		}

+		return multiFilterUnitNameType_5032Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5069Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5069Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5069Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5069Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5069Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5068Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5068Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5068Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5068Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5068Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5067Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5067Parser() {

+		if (sequentialUnitNameTypeLblStrict_5067Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5067Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5067Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5066Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5066Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5066Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5066Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5066Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5065Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5065Parser() {

+		if (conditionalUnitNameType_5065Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5065Parser = parser;

+		}

+		return conditionalUnitNameType_5065Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser cartesianQueuedUnitNameTypeLblStrict_5033Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getCartesianQueuedUnitNameTypeLblStrict_5033Parser() {

+		if (cartesianQueuedUnitNameTypeLblStrict_5033Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getCartesianQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			cartesianQueuedUnitNameTypeLblStrict_5033Parser = parser;

+		}

+		return cartesianQueuedUnitNameTypeLblStrict_5033Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser parallelQueuedUnitNameTypeLblStrict_5035Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getParallelQueuedUnitNameTypeLblStrict_5035Parser() {

+		if (parallelQueuedUnitNameTypeLblStrict_5035Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getParallelQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parallelQueuedUnitNameTypeLblStrict_5035Parser = parser;

+		}

+		return parallelQueuedUnitNameTypeLblStrict_5035Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5034Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5034Parser() {

+		if (atomicUnitLabelType_5034Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5034Parser = parser;

+		}

+		return atomicUnitLabelType_5034Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFeatureUnitNameType_5036Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFeatureUnitNameType_5036Parser() {

+		if (singleFeatureUnitNameType_5036Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFeatureUnitNameType_5036Parser = parser;

+		}

+		return singleFeatureUnitNameType_5036Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFeatureUnitNameType_5037Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFeatureUnitNameType_5037Parser() {

+		if (multiFeatureUnitNameType_5037Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFeatureUnitNameType_5037Parser = parser;

+		}

+		return multiFeatureUnitNameType_5037Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFilterUnitNameType_5038Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFilterUnitNameType_5038Parser() {

+		if (singleFilterUnitNameType_5038Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFilterUnitNameType_5038Parser = parser;

+		}

+		return singleFilterUnitNameType_5038Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFilterUnitNameType_5039Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFilterUnitNameType_5039Parser() {

+		if (multiFilterUnitNameType_5039Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFilterUnitNameType_5039Parser = parser;

+		}

+		return multiFilterUnitNameType_5039Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5064Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5064Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5064Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5064Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5064Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFeatureUnitNameType_5040Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFeatureUnitNameType_5040Parser() {

+		if (singleFeatureUnitNameType_5040Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFeatureUnitNameType_5040Parser = parser;

+		}

+		return singleFeatureUnitNameType_5040Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFeatureUnitNameType_5041Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFeatureUnitNameType_5041Parser() {

+		if (multiFeatureUnitNameType_5041Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFeatureUnitNameType_5041Parser = parser;

+		}

+		return multiFeatureUnitNameType_5041Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFilterUnitNameType_5042Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFilterUnitNameType_5042Parser() {

+		if (singleFilterUnitNameType_5042Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFilterUnitNameType_5042Parser = parser;

+		}

+		return singleFilterUnitNameType_5042Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFilterUnitNameType_5043Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFilterUnitNameType_5043Parser() {

+		if (multiFilterUnitNameType_5043Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFilterUnitNameType_5043Parser = parser;

+		}

+		return multiFilterUnitNameType_5043Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5063Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5063Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5063Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5063Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5063Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5062Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5062Parser() {

+		if (sequentialUnitNameTypeLblStrict_5062Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5062Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5062Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFeatureUnitNameType_5044Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFeatureUnitNameType_5044Parser() {

+		if (singleFeatureUnitNameType_5044Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFeatureUnitNameType_5044Parser = parser;

+		}

+		return singleFeatureUnitNameType_5044Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFeatureUnitNameType_5045Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFeatureUnitNameType_5045Parser() {

+		if (multiFeatureUnitNameType_5045Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFeatureUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFeatureUnitNameType_5045Parser = parser;

+		}

+		return multiFeatureUnitNameType_5045Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleFilterUnitNameType_5046Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleFilterUnitNameType_5046Parser() {

+		if (singleFilterUnitNameType_5046Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			singleFilterUnitNameType_5046Parser = parser;

+		}

+		return singleFilterUnitNameType_5046Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser multiFilterUnitNameType_5047Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getMultiFilterUnitNameType_5047Parser() {

+		if (multiFilterUnitNameType_5047Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getMultiFilterUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			multiFilterUnitNameType_5047Parser = parser;

+		}

+		return multiFilterUnitNameType_5047Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5061Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5061Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5061Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5061Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5061Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5060Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5060Parser() {

+		if (conditionalUnitNameType_5060Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5060Parser = parser;

+		}

+		return conditionalUnitNameType_5060Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser singleQueuedUnitNameTypeLblStrict_5049Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSingleQueuedUnitNameTypeLblStrict_5049Parser() {

+		if (singleQueuedUnitNameTypeLblStrict_5049Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_Type(),

+					ComrelPackage.eINSTANCE.getSingleQueuedUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			singleQueuedUnitNameTypeLblStrict_5049Parser = parser;

+		}

+		return singleQueuedUnitNameTypeLblStrict_5049Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5048Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5048Parser() {

+		if (atomicUnitLabelType_5048Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5048Parser = parser;

+		}

+		return atomicUnitLabelType_5048Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5059Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5059Parser() {

+		if (sequentialUnitNameTypeLblStrict_5059Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5059Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5059Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5058Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5058Parser() {

+		if (sequentialUnitNameTypeLblStrict_5058Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5058Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5058Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5057Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5057Parser() {

+		if (conditionalUnitNameType_5057Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5057Parser = parser;

+		}

+		return conditionalUnitNameType_5057Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5056Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5056Parser() {

+		if (conditionalUnitNameType_5056Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5056Parser = parser;

+		}

+		return conditionalUnitNameType_5056Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser sequentialUnitNameTypeLblStrict_5051Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getSequentialUnitNameTypeLblStrict_5051Parser() {

+		if (sequentialUnitNameTypeLblStrict_5051Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_Type(),

+					ComrelPackage.eINSTANCE.getSequentialUnit_LblStrict() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			sequentialUnitNameTypeLblStrict_5051Parser = parser;

+		}

+		return sequentialUnitNameTypeLblStrict_5051Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5050Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5050Parser() {

+		if (atomicUnitLabelType_5050Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5050Parser = parser;

+		}

+		return atomicUnitLabelType_5050Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionalUnitNameType_5055Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionalUnitNameType_5055Parser() {

+		if (conditionalUnitNameType_5055Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionalUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			conditionalUnitNameType_5055Parser = parser;

+		}

+		return conditionalUnitNameType_5055Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser conditionCheckNameTypeSpec_5052Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getConditionCheckNameTypeSpec_5052Parser() {

+		if (conditionCheckNameTypeSpec_5052Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getNamedElement_Name(),

+					ComrelPackage.eINSTANCE.getConditionCheck_Type(),

+					ComrelPackage.eINSTANCE.getConditionCheck_Spec() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1} -{2}-"); //$NON-NLS-1$

+			conditionCheckNameTypeSpec_5052Parser = parser;

+		}

+		return conditionCheckNameTypeSpec_5052Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5053Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5053Parser() {

+		if (atomicUnitLabelType_5053Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5053Parser = parser;

+		}

+		return atomicUnitLabelType_5053Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IParser atomicUnitLabelType_5054Parser;

+

+	/**

+	 * @generated

+	 */

+	private IParser getAtomicUnitLabelType_5054Parser() {

+		if (atomicUnitLabelType_5054Parser == null) {

+			EAttribute[] features = new EAttribute[] {

+					ComrelPackage.eINSTANCE.getAtomicUnit_Label(),

+					ComrelPackage.eINSTANCE.getAtomicUnit_Type() };

+			MessageFormatParser parser = new MessageFormatParser(features);

+			parser.setViewPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditorPattern("{0}:{1}"); //$NON-NLS-1$

+			parser.setEditPattern("{0}:{1}"); //$NON-NLS-1$

+			atomicUnitLabelType_5054Parser = parser;

+		}

+		return atomicUnitLabelType_5054Parser;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IParser getParser(int visualID) {

+		switch (visualID) {

+		case SingleInputPortNameTypeEditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5001Parser();

+		case CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5080Parser();

+		case ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5081Parser();

+		case SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5082Parser();

+		case SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5083Parser();

+		case ConditionalUnitNameTypeEditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5084Parser();

+		case AtomicUnitLabelTypeEditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5085Parser();

+		case SingleInputPortNameType2EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5002Parser();

+		case MultiInputPortNameTypeEditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5003Parser();

+		case CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5079Parser();

+		case ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5078Parser();

+		case SingleInputPortNameType3EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5004Parser();

+		case MultiInputPortNameType2EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5005Parser();

+		case CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5077Parser();

+		case SingleFeatureUnitNameTypeEditPart.VISUAL_ID:

+			return getSingleFeatureUnitNameType_5009Parser();

+		case SingleInputPortNameType4EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5006Parser();

+		case MultiInputPortNameType3EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5007Parser();

+		case SingleOutputPortNameTypeEditPart.VISUAL_ID:

+			return getSingleOutputPortNameType_5008Parser();

+		case MultiFeatureUnitNameTypeEditPart.VISUAL_ID:

+			return getMultiFeatureUnitNameType_5013Parser();

+		case SingleInputPortNameType5EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5010Parser();

+		case MultiInputPortNameType4EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5011Parser();

+		case MultiOutputPortNameTypeEditPart.VISUAL_ID:

+			return getMultiOutputPortNameType_5012Parser();

+		case SingleFilterUnitNameTypeEditPart.VISUAL_ID:

+			return getSingleFilterUnitNameType_5016Parser();

+		case MultiInputPortNameType5EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5014Parser();

+		case SingleOutputPortNameType2EditPart.VISUAL_ID:

+			return getSingleOutputPortNameType_5015Parser();

+		case MultiFilterUnitNameTypeEditPart.VISUAL_ID:

+			return getMultiFilterUnitNameType_5019Parser();

+		case MultiInputPortNameType6EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5017Parser();

+		case MultiOutputPortNameType2EditPart.VISUAL_ID:

+			return getMultiOutputPortNameType_5018Parser();

+		case SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5076Parser();

+		case SingleInputPortNameType6EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5020Parser();

+		case MultiInputPortNameType7EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5021Parser();

+		case CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5075Parser();

+		case SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5074Parser();

+		case SingleInputPortNameType7EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5022Parser();

+		case MultiInputPortNameType8EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5023Parser();

+		case CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5073Parser();

+		case ConditionalUnitNameType2EditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5072Parser();

+		case SingleInputPortNameType8EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5024Parser();

+		case MultiInputPortNameType9EditPart.VISUAL_ID:

+			return getMultiInputPortNameType_5025Parser();

+		case CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5028Parser();

+		case AtomicUnitLabelType2EditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5027Parser();

+		case SingleInputPortNameType9EditPart.VISUAL_ID:

+			return getSingleInputPortNameType_5026Parser();

+		case ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5071Parser();

+		case ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5070Parser();

+		case SingleFeatureUnitNameType2EditPart.VISUAL_ID:

+			return getSingleFeatureUnitNameType_5029Parser();

+		case MultiFeatureUnitNameType2EditPart.VISUAL_ID:

+			return getMultiFeatureUnitNameType_5030Parser();

+		case SingleFilterUnitNameType2EditPart.VISUAL_ID:

+			return getSingleFilterUnitNameType_5031Parser();

+		case MultiFilterUnitNameType2EditPart.VISUAL_ID:

+			return getMultiFilterUnitNameType_5032Parser();

+		case SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5069Parser();

+		case ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5068Parser();

+		case SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5067Parser();

+		case ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5066Parser();

+		case ConditionalUnitNameType3EditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5065Parser();

+		case CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+			return getCartesianQueuedUnitNameTypeLblStrict_5033Parser();

+		case ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+			return getParallelQueuedUnitNameTypeLblStrict_5035Parser();

+		case AtomicUnitLabelType3EditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5034Parser();

+		case SingleFeatureUnitNameType3EditPart.VISUAL_ID:

+			return getSingleFeatureUnitNameType_5036Parser();

+		case MultiFeatureUnitNameType3EditPart.VISUAL_ID:

+			return getMultiFeatureUnitNameType_5037Parser();

+		case SingleFilterUnitNameType3EditPart.VISUAL_ID:

+			return getSingleFilterUnitNameType_5038Parser();

+		case MultiFilterUnitNameType3EditPart.VISUAL_ID:

+			return getMultiFilterUnitNameType_5039Parser();

+		case SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5064Parser();

+		case SingleFeatureUnitNameType4EditPart.VISUAL_ID:

+			return getSingleFeatureUnitNameType_5040Parser();

+		case MultiFeatureUnitNameType4EditPart.VISUAL_ID:

+			return getMultiFeatureUnitNameType_5041Parser();

+		case SingleFilterUnitNameType4EditPart.VISUAL_ID:

+			return getSingleFilterUnitNameType_5042Parser();

+		case MultiFilterUnitNameType4EditPart.VISUAL_ID:

+			return getMultiFilterUnitNameType_5043Parser();

+		case SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5063Parser();

+		case SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5062Parser();

+		case SingleFeatureUnitNameType5EditPart.VISUAL_ID:

+			return getSingleFeatureUnitNameType_5044Parser();

+		case MultiFeatureUnitNameType5EditPart.VISUAL_ID:

+			return getMultiFeatureUnitNameType_5045Parser();

+		case SingleFilterUnitNameType5EditPart.VISUAL_ID:

+			return getSingleFilterUnitNameType_5046Parser();

+		case MultiFilterUnitNameType5EditPart.VISUAL_ID:

+			return getMultiFilterUnitNameType_5047Parser();

+		case SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5061Parser();

+		case ConditionalUnitNameType4EditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5060Parser();

+		case SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+			return getSingleQueuedUnitNameTypeLblStrict_5049Parser();

+		case AtomicUnitLabelType4EditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5048Parser();

+		case SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5059Parser();

+		case SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5058Parser();

+		case ConditionalUnitNameType5EditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5057Parser();

+		case ConditionalUnitNameType6EditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5056Parser();

+		case SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID:

+			return getSequentialUnitNameTypeLblStrict_5051Parser();

+		case AtomicUnitLabelType5EditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5050Parser();

+		case ConditionalUnitNameType7EditPart.VISUAL_ID:

+			return getConditionalUnitNameType_5055Parser();

+		case ConditionCheckNameTypeSpecEditPart.VISUAL_ID:

+			return getConditionCheckNameTypeSpec_5052Parser();

+		case AtomicUnitLabelType6EditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5053Parser();

+		case AtomicUnitLabelType7EditPart.VISUAL_ID:

+			return getAtomicUnitLabelType_5054Parser();

+		}

+		return null;

+	}

+

+	/**

+	 * Utility method that consults ParserService

+	 * @generated

+	 */

+	public static IParser getParser(IElementType type, EObject object,

+			String parserHint) {

+		return ParserService.getInstance().getParser(

+				new HintAdapter(type, object, parserHint));

+	}

+

+	/**

+	 * @generated

+	 */

+	public IParser getParser(IAdaptable hint) {

+		String vid = (String) hint.getAdapter(String.class);

+		if (vid != null) {

+			return getParser(ComrelVisualIDRegistry.getVisualID(vid));

+		}

+		View view = (View) hint.getAdapter(View.class);

+		if (view != null) {

+			return getParser(ComrelVisualIDRegistry.getVisualID(view));

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean provides(IOperation operation) {

+		if (operation instanceof GetParserOperation) {

+			IAdaptable hint = ((GetParserOperation) operation).getHint();

+			if (ComrelElementTypes.getElement(hint) == null) {

+				return false;

+			}

+			return getParser(hint) != null;

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	private static class HintAdapter extends ParserHintAdapter {

+

+		/**

+		 * @generated

+		 */

+		private final IElementType elementType;

+

+		/**

+		 * @generated

+		 */

+		public HintAdapter(IElementType type, EObject object, String parserHint) {

+			super(object, parserHint);

+			assert type != null;

+			elementType = type;

+		}

+

+		/**

+		 * @generated

+		 */

+		public Object getAdapter(Class adapter) {

+			if (IElementType.class.equals(adapter)) {

+				return elementType;

+			}

+			return super.getAdapter(adapter);

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelShortcutsDecoratorProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelShortcutsDecoratorProvider.java
new file mode 100644
index 0000000..cc7d0a3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelShortcutsDecoratorProvider.java
@@ -0,0 +1,102 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.AbstractDecorator;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.CreateDecoratorsOperation;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecoratorProvider;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecoratorTarget;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelShortcutsDecoratorProvider extends AbstractProvider

+		implements IDecoratorProvider {

+

+	/**

+	 * @generated

+	 */

+	public static final String SHORTCUTS_DECORATOR_ID = "shortcuts"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	public boolean provides(IOperation operation) {

+		if (!(operation instanceof CreateDecoratorsOperation)) {

+			return false;

+		}

+		IDecoratorTarget decoratorTarget = ((CreateDecoratorsOperation) operation)

+				.getDecoratorTarget();

+		View view = (View) decoratorTarget.getAdapter(View.class);

+		return view != null

+				&& CompositeRefactoringEditPart.MODEL_ID

+						.equals(ComrelVisualIDRegistry.getModelID(view));

+	}

+

+	/**

+	 * @generated

+	 */

+	public void createDecorators(IDecoratorTarget decoratorTarget) {

+		View view = (View) decoratorTarget.getAdapter(View.class);

+		if (view != null) {

+			EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$

+			if (annotation != null) {

+				decoratorTarget.installDecorator(SHORTCUTS_DECORATOR_ID,

+						new ShortcutsDecorator(decoratorTarget));

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	protected class ShortcutsDecorator extends AbstractDecorator {

+

+		/**

+		 * @generated

+		 */

+		public ShortcutsDecorator(IDecoratorTarget decoratorTarget) {

+			super(decoratorTarget);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void activate() {

+			refresh();

+		}

+

+		/**

+		 * @generated

+		 */

+		public void refresh() {

+			removeDecoration();

+			EditPart editPart = (EditPart) getDecoratorTarget().getAdapter(

+					EditPart.class);

+			Image image = ComrelDiagramEditorPlugin.getInstance()

+					.getBundledImage("icons/shortcut.gif"); //$NON-NLS-1$

+			if (editPart instanceof ShapeEditPart) {

+				setDecoration(getDecoratorTarget().addShapeDecoration(image,

+						IDecoratorTarget.Direction.SOUTH_WEST, 0, false));

+			} else if (editPart instanceof ConnectionEditPart) {

+				setDecoration(getDecoratorTarget().addConnectionDecoration(

+						image, 50, false));

+			}

+		}

+

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelValidationDecoratorProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelValidationDecoratorProvider.java
new file mode 100644
index 0000000..26bf8a8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelValidationDecoratorProvider.java
@@ -0,0 +1,453 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IMarker;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.draw2d.FlowLayout;

+import org.eclipse.draw2d.Label;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

+import org.eclipse.gef.EditDomain;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gef.editparts.AbstractConnectionEditPart;

+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager;

+import org.eclipse.gmf.runtime.common.ui.resources.IFileObserver;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;

+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditDomain;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.AbstractDecorator;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.CreateDecoratorsOperation;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecorator;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecoratorProvider;

+import org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecoratorTarget;

+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.MapModeUtil;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.ui.ISharedImages;

+import org.eclipse.ui.PlatformUI;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.part.ComrelDiagramEditor;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelValidationDecoratorProvider extends AbstractProvider

+		implements IDecoratorProvider {

+

+	/**

+	 * @generated

+	 */

+	private static final String KEY = "validationStatus"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	private static final String MARKER_TYPE = ComrelDiagramEditorPlugin.ID

+			+ ".diagnostic"; //$NON-NLS-1$

+

+	/**

+	 * @generated

+	 */

+	private static MarkerObserver fileObserver;

+

+	/**

+	 * @generated

+	 */

+	private static Map/*<String, List<IDecorator>>*/allDecorators = new HashMap();

+

+	/**

+	 * @generated

+	 */

+	public void createDecorators(IDecoratorTarget decoratorTarget) {

+		EditPart editPart = (EditPart) decoratorTarget

+				.getAdapter(EditPart.class);

+		if (editPart instanceof GraphicalEditPart

+				|| editPart instanceof AbstractConnectionEditPart) {

+			Object model = editPart.getModel();

+			if ((model instanceof View)) {

+				View view = (View) model;

+				if (!(view instanceof Edge) && !view.isSetElement()) {

+					return;

+				}

+			}

+			EditDomain ed = editPart.getViewer().getEditDomain();

+			if (!(ed instanceof DiagramEditDomain)) {

+				return;

+			}

+			if (((DiagramEditDomain) ed).getEditorPart() instanceof ComrelDiagramEditor) {

+				decoratorTarget.installDecorator(KEY, new StatusDecorator(

+						decoratorTarget));

+			}

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	public boolean provides(IOperation operation) {

+		if (!(operation instanceof CreateDecoratorsOperation)) {

+			return false;

+		}

+		IDecoratorTarget decoratorTarget = ((CreateDecoratorsOperation) operation)

+				.getDecoratorTarget();

+		View view = (View) decoratorTarget.getAdapter(View.class);

+		return view != null

+				&& CompositeRefactoringEditPart.MODEL_ID

+						.equals(ComrelVisualIDRegistry.getModelID(view));

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void refreshDecorators(View view) {

+		refreshDecorators(ViewUtil.getIdStr(view), view.getDiagram());

+	}

+

+	/**

+	 * @generated

+	 */

+	private static void refreshDecorators(String viewId, Diagram diagram) {

+		final List decorators = viewId != null ? (List) allDecorators

+				.get(viewId) : null;

+		if (decorators == null || decorators.isEmpty() || diagram == null) {

+			return;

+		}

+		final Diagram fdiagram = diagram;

+		PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {

+

+			public void run() {

+				try {

+					TransactionUtil.getEditingDomain(fdiagram).runExclusive(

+							new Runnable() {

+

+								public void run() {

+									for (Iterator it = decorators.iterator(); it

+											.hasNext();) {

+										IDecorator decorator = (IDecorator) it

+												.next();

+										decorator.refresh();

+									}

+								}

+							});

+				} catch (Exception e) {

+					ComrelDiagramEditorPlugin.getInstance().logError(

+							"Decorator refresh failure", e); //$NON-NLS-1$

+				}

+			}

+		});

+	}

+

+	/**

+	 * @generated

+	 */

+	public static class StatusDecorator extends AbstractDecorator {

+

+		/**

+		 * @generated

+		 */

+		private String viewId;

+

+		/**

+		 * @generated

+		 */

+		public StatusDecorator(IDecoratorTarget decoratorTarget) {

+			super(decoratorTarget);

+			try {

+				final View view = (View) getDecoratorTarget().getAdapter(

+						View.class);

+				TransactionUtil.getEditingDomain(view).runExclusive(

+						new Runnable() {

+

+							public void run() {

+								StatusDecorator.this.viewId = view != null ? ViewUtil

+										.getIdStr(view) : null;

+							}

+						});

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"ViewID access failure", e); //$NON-NLS-1$			

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		public void refresh() {

+			removeDecoration();

+			View view = (View) getDecoratorTarget().getAdapter(View.class);

+			if (view == null || view.eResource() == null) {

+				return;

+			}

+			EditPart editPart = (EditPart) getDecoratorTarget().getAdapter(

+					EditPart.class);

+			if (editPart == null || editPart.getViewer() == null) {

+				return;

+			}

+

+			// query for all the validation markers of the current resource

+			String elementId = ViewUtil.getIdStr(view);

+			if (elementId == null) {

+				return;

+			}

+			int severity = IMarker.SEVERITY_INFO;

+			IMarker foundMarker = null;

+			IResource resource = WorkspaceSynchronizer

+					.getFile(view.eResource());

+			if (resource == null || !resource.exists()) {

+				return;

+			}

+			IMarker[] markers = null;

+			try {

+				markers = resource.findMarkers(MARKER_TYPE, true,

+						IResource.DEPTH_INFINITE);

+			} catch (CoreException e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Validation markers refresh failure", e); //$NON-NLS-1$

+			}

+			if (markers == null || markers.length == 0) {

+				return;

+			}

+			Label toolTip = null;

+			for (int i = 0; i < markers.length; i++) {

+				IMarker marker = markers[i];

+				String attribute = marker

+						.getAttribute(

+								org.eclipse.gmf.runtime.common.ui.resources.IMarker.ELEMENT_ID,

+								""); //$NON-NLS-1$

+				if (attribute.equals(elementId)) {

+					int nextSeverity = marker.getAttribute(IMarker.SEVERITY,

+							IMarker.SEVERITY_INFO);

+					Image nextImage = getImage(nextSeverity);

+					if (foundMarker == null) {

+						foundMarker = marker;

+						toolTip = new Label(marker.getAttribute(

+								IMarker.MESSAGE, ""), //$NON-NLS-1$

+								nextImage);

+					} else {

+						if (toolTip.getChildren().isEmpty()) {

+							Label comositeLabel = new Label();

+							FlowLayout fl = new FlowLayout(false);

+							fl.setMinorSpacing(0);

+							comositeLabel.setLayoutManager(fl);

+							comositeLabel.add(toolTip);

+							toolTip = comositeLabel;

+						}

+						toolTip.add(new Label(marker.getAttribute(

+								IMarker.MESSAGE, ""), //$NON-NLS-1$

+								nextImage));

+					}

+					severity = (nextSeverity > severity) ? nextSeverity

+							: severity;

+				}

+			}

+			if (foundMarker == null) {

+				return;

+			}

+

+			// add decoration

+			if (editPart instanceof org.eclipse.gef.GraphicalEditPart) {

+				if (view instanceof Edge) {

+					setDecoration(getDecoratorTarget().addConnectionDecoration(

+							getImage(severity), 50, true));

+				} else {

+					int margin = -1;

+					if (editPart instanceof org.eclipse.gef.GraphicalEditPart) {

+						margin = MapModeUtil.getMapMode(

+								((org.eclipse.gef.GraphicalEditPart) editPart)

+										.getFigure()).DPtoLP(margin);

+					}

+					setDecoration(getDecoratorTarget()

+							.addShapeDecoration(getImage(severity),

+									IDecoratorTarget.Direction.NORTH_EAST,

+									margin, true));

+				}

+				getDecoration().setToolTip(toolTip);

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		private Image getImage(int severity) {

+			String imageName = ISharedImages.IMG_OBJS_ERROR_TSK;

+			switch (severity) {

+			case IMarker.SEVERITY_ERROR:

+				imageName = ISharedImages.IMG_OBJS_ERROR_TSK;

+				break;

+			case IMarker.SEVERITY_WARNING:

+				imageName = ISharedImages.IMG_OBJS_WARN_TSK;

+				break;

+			default:

+				imageName = ISharedImages.IMG_OBJS_INFO_TSK;

+			}

+			return PlatformUI.getWorkbench().getSharedImages()

+					.getImage(imageName);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void activate() {

+			if (viewId == null) {

+				return;

+			}

+

+			// add self to global decorators registry

+			List list = (List) allDecorators.get(viewId);

+			if (list == null) {

+				list = new ArrayList(2);

+				list.add(this);

+				allDecorators.put(viewId, list);

+			} else if (!list.contains(this)) {

+				list.add(this);

+			}

+

+			// start listening to changes in resources

+			View view = (View) getDecoratorTarget().getAdapter(View.class);

+			if (view == null) {

+				return;

+			}

+			Diagram diagramView = view.getDiagram();

+			if (diagramView == null) {

+				return;

+			}

+			if (fileObserver == null) {

+				FileChangeManager.getInstance().addFileObserver(

+						fileObserver = new MarkerObserver(diagramView));

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		public void deactivate() {

+			if (viewId == null) {

+				return;

+			}

+

+			// remove self from global decorators registry

+			List list = (List) allDecorators.get(viewId);

+			if (list != null) {

+				list.remove(this);

+				if (list.isEmpty()) {

+					allDecorators.remove(viewId);

+				}

+			}

+

+			// stop listening to changes in resources if there are no more decorators

+			if (fileObserver != null && allDecorators.isEmpty()) {

+				FileChangeManager.getInstance()

+						.removeFileObserver(fileObserver);

+				fileObserver = null;

+			}

+			super.deactivate();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	static class MarkerObserver implements IFileObserver {

+

+		/**

+		 * @generated

+		 */

+		private Diagram diagram;

+

+		/**

+		 * @generated

+		 */

+		private MarkerObserver(Diagram diagram) {

+			this.diagram = diagram;

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleFileRenamed(IFile oldFile, IFile file) {

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleFileMoved(IFile oldFile, IFile file) {

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleFileDeleted(IFile file) {

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleFileChanged(IFile file) {

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleMarkerAdded(IMarker marker) {

+			if (marker

+					.getAttribute(

+							org.eclipse.gmf.runtime.common.ui.resources.IMarker.ELEMENT_ID,

+							null) != null) {

+				handleMarkerChanged(marker);

+			}

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleMarkerDeleted(IMarker marker, Map attributes) {

+			String viewId = (String) attributes

+					.get(org.eclipse.gmf.runtime.common.ui.resources.IMarker.ELEMENT_ID);

+			refreshDecorators(viewId, diagram);

+		}

+

+		/**

+		 * @generated

+		 */

+		public void handleMarkerChanged(IMarker marker) {

+			if (!MARKER_TYPE.equals(getType(marker))) {

+				return;

+			}

+			String viewId = marker

+					.getAttribute(

+							org.eclipse.gmf.runtime.common.ui.resources.IMarker.ELEMENT_ID,

+							""); //$NON-NLS-1$

+			refreshDecorators(viewId, diagram);

+		}

+

+		/**

+		 * @generated

+		 */

+		private String getType(IMarker marker) {

+			try {

+				return marker.getType();

+			} catch (CoreException e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Validation marker refresh failure", e); //$NON-NLS-1$

+				return ""; //$NON-NLS-1$

+			}

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelValidationProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelValidationProvider.java
new file mode 100644
index 0000000..4870422
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelValidationProvider.java
@@ -0,0 +1,74 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.gmf.runtime.notation.View;

+

+import comrel.diagram.edit.parts.CompositeRefactoringEditPart;

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelValidationProvider {

+

+	/**

+	 * @generated

+	 */

+	private static boolean constraintsActive = false;

+

+	/**

+	 * @generated

+	 */

+	public static boolean shouldConstraintsBePrivate() {

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	public static void runWithConstraints(

+			TransactionalEditingDomain editingDomain, Runnable operation) {

+		final Runnable op = operation;

+		Runnable task = new Runnable() {

+			public void run() {

+				try {

+					constraintsActive = true;

+					op.run();

+				} finally {

+					constraintsActive = false;

+				}

+			}

+		};

+		if (editingDomain != null) {

+			try {

+				editingDomain.runExclusive(task);

+			} catch (Exception e) {

+				ComrelDiagramEditorPlugin.getInstance().logError(

+						"Validation failed", e); //$NON-NLS-1$

+			}

+		} else {

+			task.run();

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	static boolean isInDefaultEditorContext(Object object) {

+		if (shouldConstraintsBePrivate() && !constraintsActive) {

+			return false;

+		}

+		if (object instanceof View) {

+			return constraintsActive

+					&& CompositeRefactoringEditPart.MODEL_ID

+							.equals(ComrelVisualIDRegistry

+									.getModelID((View) object));

+		}

+		return true;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelViewProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelViewProvider.java
new file mode 100644
index 0000000..f386ab9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ComrelViewProvider.java
@@ -0,0 +1,5431 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import java.util.ArrayList;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.ecore.EAnnotation;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EcoreFactory;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;

+import org.eclipse.gmf.runtime.common.core.service.IOperation;

+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;

+import org.eclipse.gmf.runtime.diagram.core.providers.IViewProvider;

+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateDiagramViewOperation;

+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateEdgeViewOperation;

+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateNodeViewOperation;

+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateViewForKindOperation;

+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateViewOperation;

+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;

+import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;

+import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.emf.type.core.IHintedType;

+import org.eclipse.gmf.runtime.notation.Connector;

+import org.eclipse.gmf.runtime.notation.DecorationNode;

+import org.eclipse.gmf.runtime.notation.Diagram;

+import org.eclipse.gmf.runtime.notation.Edge;

+import org.eclipse.gmf.runtime.notation.FontStyle;

+import org.eclipse.gmf.runtime.notation.Location;

+import org.eclipse.gmf.runtime.notation.MeasurementUnit;

+import org.eclipse.gmf.runtime.notation.Node;

+import org.eclipse.gmf.runtime.notation.NotationFactory;

+import org.eclipse.gmf.runtime.notation.NotationPackage;

+import org.eclipse.gmf.runtime.notation.RelativeBendpoints;

+import org.eclipse.gmf.runtime.notation.Routing;

+import org.eclipse.gmf.runtime.notation.Shape;

+import org.eclipse.gmf.runtime.notation.TitleStyle;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint;

+import org.eclipse.jface.preference.IPreferenceStore;

+import org.eclipse.jface.preference.PreferenceConverter;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.graphics.FontData;

+

+import comrel.diagram.edit.parts.*;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+

+/**

+ * @generated

+ */

+public class ComrelViewProvider extends AbstractProvider implements

+		IViewProvider {

+

+	/**

+	 * @generated

+	 */

+	public final boolean provides(IOperation operation) {

+		if (operation instanceof CreateViewForKindOperation) {

+			return provides((CreateViewForKindOperation) operation);

+		}

+		assert operation instanceof CreateViewOperation;

+		if (operation instanceof CreateDiagramViewOperation) {

+			return provides((CreateDiagramViewOperation) operation);

+		} else if (operation instanceof CreateEdgeViewOperation) {

+			return provides((CreateEdgeViewOperation) operation);

+		} else if (operation instanceof CreateNodeViewOperation) {

+			return provides((CreateNodeViewOperation) operation);

+		}

+		return false;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean provides(CreateViewForKindOperation op) {

+		/*

+		 if (op.getViewKind() == Node.class)

+		 return getNodeViewClass(op.getSemanticAdapter(), op.getContainerView(), op.getSemanticHint()) != null;

+		 if (op.getViewKind() == Edge.class)

+		 return getEdgeViewClass(op.getSemanticAdapter(), op.getContainerView(), op.getSemanticHint()) != null;

+		 */

+		return true;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean provides(CreateDiagramViewOperation op) {

+		return CompositeRefactoringEditPart.MODEL_ID.equals(op

+				.getSemanticHint())

+				&& ComrelVisualIDRegistry

+						.getDiagramVisualID(getSemanticElement(op

+								.getSemanticAdapter())) != -1;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean provides(CreateNodeViewOperation op) {

+		if (op.getContainerView() == null) {

+			return false;

+		}

+		IElementType elementType = getSemanticElementType(op

+				.getSemanticAdapter());

+		EObject domainElement = getSemanticElement(op.getSemanticAdapter());

+		int visualID;

+		if (op.getSemanticHint() == null) {

+			// Semantic hint is not specified. Can be a result of call from CanonicalEditPolicy.

+			// In this situation there should be NO elementType, visualID will be determined

+			// by VisualIDRegistry.getNodeVisualID() for domainElement.

+			if (elementType != null || domainElement == null) {

+				return false;

+			}

+			visualID = ComrelVisualIDRegistry.getNodeVisualID(

+					op.getContainerView(), domainElement);

+		} else {

+			visualID = ComrelVisualIDRegistry.getVisualID(op.getSemanticHint());

+			if (elementType != null) {

+				if (!ComrelElementTypes.isKnownElementType(elementType)

+						|| (!(elementType instanceof IHintedType))) {

+					return false; // foreign element type

+				}

+				String elementTypeHint = ((IHintedType) elementType)

+						.getSemanticHint();

+				if (!op.getSemanticHint().equals(elementTypeHint)) {

+					return false; // if semantic hint is specified it should be the same as in element type

+				}

+				if (domainElement != null

+						&& visualID != ComrelVisualIDRegistry.getNodeVisualID(

+								op.getContainerView(), domainElement)) {

+					return false; // visual id for node EClass should match visual id from element type

+				}

+			} else {

+				if (!CompositeRefactoringEditPart.MODEL_ID

+						.equals(ComrelVisualIDRegistry.getModelID(op

+								.getContainerView()))) {

+					return false; // foreign diagram

+				}

+				switch (visualID) {

+				case SingleInputPortEditPart.VISUAL_ID:

+				case CartesianQueuedUnitEditPart.VISUAL_ID:

+				case MultiInputPortEditPart.VISUAL_ID:

+				case ParallelQueuedUnit2EditPart.VISUAL_ID:

+				case SingleFeatureUnitEditPart.VISUAL_ID:

+				case SingleOutputPortEditPart.VISUAL_ID:

+				case MultiFeatureUnitEditPart.VISUAL_ID:

+				case MultiOutputPortEditPart.VISUAL_ID:

+				case SingleFilterUnitEditPart.VISUAL_ID:

+				case MultiFilterUnitEditPart.VISUAL_ID:

+				case SingleQueuedUnit2EditPart.VISUAL_ID:

+				case SequentialUnit2EditPart.VISUAL_ID:

+				case ConditionalUnit2EditPart.VISUAL_ID:

+				case AtomicUnit2EditPart.VISUAL_ID:

+				case ConditionCheckEditPart.VISUAL_ID:

+				case ParallelQueuedUnitEditPart.VISUAL_ID:

+				case SingleQueuedUnitEditPart.VISUAL_ID:

+				case SequentialUnitEditPart.VISUAL_ID:

+				case ConditionalUnitEditPart.VISUAL_ID:

+				case AtomicUnitEditPart.VISUAL_ID:

+				case SingleInputPort2EditPart.VISUAL_ID:

+				case CartesianQueuedUnit2EditPart.VISUAL_ID:

+				case SingleInputPort3EditPart.VISUAL_ID:

+				case MultiInputPort2EditPart.VISUAL_ID:

+				case CartesianQueuedUnit3EditPart.VISUAL_ID:

+				case SingleInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort3EditPart.VISUAL_ID:

+				case SingleInputPort5EditPart.VISUAL_ID:

+				case MultiInputPort4EditPart.VISUAL_ID:

+				case MultiInputPort5EditPart.VISUAL_ID:

+				case SingleOutputPort2EditPart.VISUAL_ID:

+				case MultiInputPort6EditPart.VISUAL_ID:

+				case MultiOutputPort2EditPart.VISUAL_ID:

+				case SingleInputPort6EditPart.VISUAL_ID:

+				case MultiInputPort7EditPart.VISUAL_ID:

+				case CartesianQueuedUnit4EditPart.VISUAL_ID:

+				case SingleInputPort7EditPart.VISUAL_ID:

+				case MultiInputPort8EditPart.VISUAL_ID:

+				case CartesianQueuedUnit5EditPart.VISUAL_ID:

+				case SingleInputPort8EditPart.VISUAL_ID:

+				case MultiInputPort9EditPart.VISUAL_ID:

+				case CartesianQueuedUnit6EditPart.VISUAL_ID:

+				case SingleInputPort9EditPart.VISUAL_ID:

+				case ParallelQueuedUnit3EditPart.VISUAL_ID:

+				case ParallelQueuedUnit4EditPart.VISUAL_ID:

+				case SingleFeatureUnit2EditPart.VISUAL_ID:

+				case MultiFeatureUnit2EditPart.VISUAL_ID:

+				case SingleFilterUnit2EditPart.VISUAL_ID:

+				case MultiFilterUnit2EditPart.VISUAL_ID:

+				case SingleQueuedUnit3EditPart.VISUAL_ID:

+				case ParallelQueuedUnit5EditPart.VISUAL_ID:

+				case SequentialUnit3EditPart.VISUAL_ID:

+				case ParallelQueuedUnit6EditPart.VISUAL_ID:

+				case ConditionalUnit3EditPart.VISUAL_ID:

+				case CartesianQueuedUnit7EditPart.VISUAL_ID:

+				case ParallelQueuedUnit7EditPart.VISUAL_ID:

+				case AtomicUnit3EditPart.VISUAL_ID:

+				case SingleFeatureUnit3EditPart.VISUAL_ID:

+				case MultiFeatureUnit3EditPart.VISUAL_ID:

+				case SingleFilterUnit3EditPart.VISUAL_ID:

+				case MultiFilterUnit3EditPart.VISUAL_ID:

+				case SingleQueuedUnit4EditPart.VISUAL_ID:

+				case SingleFeatureUnit4EditPart.VISUAL_ID:

+				case MultiFeatureUnit4EditPart.VISUAL_ID:

+				case SingleFilterUnit4EditPart.VISUAL_ID:

+				case MultiFilterUnit4EditPart.VISUAL_ID:

+				case SingleQueuedUnit5EditPart.VISUAL_ID:

+				case SequentialUnit4EditPart.VISUAL_ID:

+				case SingleFeatureUnit5EditPart.VISUAL_ID:

+				case MultiFeatureUnit5EditPart.VISUAL_ID:

+				case SingleFilterUnit5EditPart.VISUAL_ID:

+				case MultiFilterUnit5EditPart.VISUAL_ID:

+				case SingleQueuedUnit6EditPart.VISUAL_ID:

+				case ConditionalUnit4EditPart.VISUAL_ID:

+				case SingleQueuedUnit7EditPart.VISUAL_ID:

+				case AtomicUnit4EditPart.VISUAL_ID:

+				case SequentialUnit5EditPart.VISUAL_ID:

+				case SequentialUnit6EditPart.VISUAL_ID:

+				case ConditionalUnit5EditPart.VISUAL_ID:

+				case ConditionalUnit6EditPart.VISUAL_ID:

+				case SequentialUnit7EditPart.VISUAL_ID:

+				case AtomicUnit5EditPart.VISUAL_ID:

+				case ConditionalUnit7EditPart.VISUAL_ID:

+				case AtomicUnit6EditPart.VISUAL_ID:

+				case AtomicUnit7EditPart.VISUAL_ID:

+					if (domainElement == null

+							|| visualID != ComrelVisualIDRegistry

+									.getNodeVisualID(op.getContainerView(),

+											domainElement)) {

+						return false; // visual id in semantic hint should match visual id for domain element

+					}

+					break;

+				default:

+					return false;

+				}

+			}

+		}

+		return SingleInputPortEditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnitEditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnitEditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnitEditPart.VISUAL_ID == visualID

+				|| SequentialUnitEditPart.VISUAL_ID == visualID

+				|| ConditionalUnitEditPart.VISUAL_ID == visualID

+				|| AtomicUnitEditPart.VISUAL_ID == visualID

+				|| SingleInputPort2EditPart.VISUAL_ID == visualID

+				|| MultiInputPortEditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnit2EditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnit2EditPart.VISUAL_ID == visualID

+				|| SingleInputPort3EditPart.VISUAL_ID == visualID

+				|| MultiInputPort2EditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnit3EditPart.VISUAL_ID == visualID

+				|| SingleFeatureUnitEditPart.VISUAL_ID == visualID

+				|| SingleInputPort4EditPart.VISUAL_ID == visualID

+				|| MultiInputPort3EditPart.VISUAL_ID == visualID

+				|| SingleOutputPortEditPart.VISUAL_ID == visualID

+				|| MultiFeatureUnitEditPart.VISUAL_ID == visualID

+				|| SingleInputPort5EditPart.VISUAL_ID == visualID

+				|| MultiInputPort4EditPart.VISUAL_ID == visualID

+				|| MultiOutputPortEditPart.VISUAL_ID == visualID

+				|| SingleFilterUnitEditPart.VISUAL_ID == visualID

+				|| MultiInputPort5EditPart.VISUAL_ID == visualID

+				|| SingleOutputPort2EditPart.VISUAL_ID == visualID

+				|| MultiFilterUnitEditPart.VISUAL_ID == visualID

+				|| MultiInputPort6EditPart.VISUAL_ID == visualID

+				|| MultiOutputPort2EditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnit2EditPart.VISUAL_ID == visualID

+				|| SingleInputPort6EditPart.VISUAL_ID == visualID

+				|| MultiInputPort7EditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnit4EditPart.VISUAL_ID == visualID

+				|| SequentialUnit2EditPart.VISUAL_ID == visualID

+				|| SingleInputPort7EditPart.VISUAL_ID == visualID

+				|| MultiInputPort8EditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnit5EditPart.VISUAL_ID == visualID

+				|| ConditionalUnit2EditPart.VISUAL_ID == visualID

+				|| SingleInputPort8EditPart.VISUAL_ID == visualID

+				|| MultiInputPort9EditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnit6EditPart.VISUAL_ID == visualID

+				|| AtomicUnit2EditPart.VISUAL_ID == visualID

+				|| SingleInputPort9EditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnit3EditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnit4EditPart.VISUAL_ID == visualID

+				|| SingleFeatureUnit2EditPart.VISUAL_ID == visualID

+				|| MultiFeatureUnit2EditPart.VISUAL_ID == visualID

+				|| SingleFilterUnit2EditPart.VISUAL_ID == visualID

+				|| MultiFilterUnit2EditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnit3EditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnit5EditPart.VISUAL_ID == visualID

+				|| SequentialUnit3EditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnit6EditPart.VISUAL_ID == visualID

+				|| ConditionalUnit3EditPart.VISUAL_ID == visualID

+				|| CartesianQueuedUnit7EditPart.VISUAL_ID == visualID

+				|| ParallelQueuedUnit7EditPart.VISUAL_ID == visualID

+				|| AtomicUnit3EditPart.VISUAL_ID == visualID

+				|| SingleFeatureUnit3EditPart.VISUAL_ID == visualID

+				|| MultiFeatureUnit3EditPart.VISUAL_ID == visualID

+				|| SingleFilterUnit3EditPart.VISUAL_ID == visualID

+				|| MultiFilterUnit3EditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnit4EditPart.VISUAL_ID == visualID

+				|| SingleFeatureUnit4EditPart.VISUAL_ID == visualID

+				|| MultiFeatureUnit4EditPart.VISUAL_ID == visualID

+				|| SingleFilterUnit4EditPart.VISUAL_ID == visualID

+				|| MultiFilterUnit4EditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnit5EditPart.VISUAL_ID == visualID

+				|| SequentialUnit4EditPart.VISUAL_ID == visualID

+				|| SingleFeatureUnit5EditPart.VISUAL_ID == visualID

+				|| MultiFeatureUnit5EditPart.VISUAL_ID == visualID

+				|| SingleFilterUnit5EditPart.VISUAL_ID == visualID

+				|| MultiFilterUnit5EditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnit6EditPart.VISUAL_ID == visualID

+				|| ConditionalUnit4EditPart.VISUAL_ID == visualID

+				|| SingleQueuedUnit7EditPart.VISUAL_ID == visualID

+				|| AtomicUnit4EditPart.VISUAL_ID == visualID

+				|| SequentialUnit5EditPart.VISUAL_ID == visualID

+				|| SequentialUnit6EditPart.VISUAL_ID == visualID

+				|| ConditionalUnit5EditPart.VISUAL_ID == visualID

+				|| ConditionalUnit6EditPart.VISUAL_ID == visualID

+				|| SequentialUnit7EditPart.VISUAL_ID == visualID

+				|| AtomicUnit5EditPart.VISUAL_ID == visualID

+				|| ConditionalUnit7EditPart.VISUAL_ID == visualID

+				|| ConditionCheckEditPart.VISUAL_ID == visualID

+				|| AtomicUnit6EditPart.VISUAL_ID == visualID

+				|| AtomicUnit7EditPart.VISUAL_ID == visualID;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected boolean provides(CreateEdgeViewOperation op) {

+		IElementType elementType = getSemanticElementType(op

+				.getSemanticAdapter());

+		if (!ComrelElementTypes.isKnownElementType(elementType)

+				|| (!(elementType instanceof IHintedType))) {

+			return false; // foreign element type

+		}

+		String elementTypeHint = ((IHintedType) elementType).getSemanticHint();

+		if (elementTypeHint == null

+				|| (op.getSemanticHint() != null && !elementTypeHint.equals(op

+						.getSemanticHint()))) {

+			return false; // our hint is visual id and must be specified, and it should be the same as in element type

+		}

+		int visualID = ComrelVisualIDRegistry.getVisualID(elementTypeHint);

+		EObject domainElement = getSemanticElement(op.getSemanticAdapter());

+		if (domainElement != null

+				&& visualID != ComrelVisualIDRegistry

+						.getLinkWithClassVisualID(domainElement)) {

+			return false; // visual id for link EClass should match visual id from element type

+		}

+		return true;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Diagram createDiagram(IAdaptable semanticAdapter,

+			String diagramKind, PreferencesHint preferencesHint) {

+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();

+		diagram.getStyles().add(NotationFactory.eINSTANCE.createDiagramStyle());

+		diagram.setType(CompositeRefactoringEditPart.MODEL_ID);

+		diagram.setElement(getSemanticElement(semanticAdapter));

+		diagram.setMeasurementUnit(MeasurementUnit.PIXEL_LITERAL);

+		return diagram;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createNode(IAdaptable semanticAdapter, View containerView,

+			String semanticHint, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		final EObject domainElement = getSemanticElement(semanticAdapter);

+		final int visualID;

+		if (semanticHint == null) {

+			visualID = ComrelVisualIDRegistry.getNodeVisualID(containerView,

+					domainElement);

+		} else {

+			visualID = ComrelVisualIDRegistry.getVisualID(semanticHint);

+		}

+		switch (visualID) {

+		case SingleInputPortEditPart.VISUAL_ID:

+			return createSingleInputPort_2001(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnitEditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_2002(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnitEditPart.VISUAL_ID:

+			return createParallelQueuedUnit_2003(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnitEditPart.VISUAL_ID:

+			return createSingleQueuedUnit_2004(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SequentialUnitEditPart.VISUAL_ID:

+			return createSequentialUnit_2005(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionalUnitEditPart.VISUAL_ID:

+			return createConditionalUnit_2006(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case AtomicUnitEditPart.VISUAL_ID:

+			return createAtomicUnit_2007(domainElement, containerView, index,

+					persisted, preferencesHint);

+		case SingleInputPort2EditPart.VISUAL_ID:

+			return createSingleInputPort_3001(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPortEditPart.VISUAL_ID:

+			return createMultiInputPort_3002(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnit2EditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_3003(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnit2EditPart.VISUAL_ID:

+			return createParallelQueuedUnit_3004(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleInputPort3EditPart.VISUAL_ID:

+			return createSingleInputPort_3005(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort2EditPart.VISUAL_ID:

+			return createMultiInputPort_3006(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnit3EditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_3007(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFeatureUnitEditPart.VISUAL_ID:

+			return createSingleFeatureUnit_3008(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleInputPort4EditPart.VISUAL_ID:

+			return createSingleInputPort_3009(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort3EditPart.VISUAL_ID:

+			return createMultiInputPort_3010(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleOutputPortEditPart.VISUAL_ID:

+			return createSingleOutputPort_3011(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFeatureUnitEditPart.VISUAL_ID:

+			return createMultiFeatureUnit_3012(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleInputPort5EditPart.VISUAL_ID:

+			return createSingleInputPort_3013(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort4EditPart.VISUAL_ID:

+			return createMultiInputPort_3014(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiOutputPortEditPart.VISUAL_ID:

+			return createMultiOutputPort_3015(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFilterUnitEditPart.VISUAL_ID:

+			return createSingleFilterUnit_3016(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort5EditPart.VISUAL_ID:

+			return createMultiInputPort_3017(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleOutputPort2EditPart.VISUAL_ID:

+			return createSingleOutputPort_3018(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFilterUnitEditPart.VISUAL_ID:

+			return createMultiFilterUnit_3019(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort6EditPart.VISUAL_ID:

+			return createMultiInputPort_3020(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiOutputPort2EditPart.VISUAL_ID:

+			return createMultiOutputPort_3021(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnit2EditPart.VISUAL_ID:

+			return createSingleQueuedUnit_3022(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleInputPort6EditPart.VISUAL_ID:

+			return createSingleInputPort_3023(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort7EditPart.VISUAL_ID:

+			return createMultiInputPort_3024(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnit4EditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_3025(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SequentialUnit2EditPart.VISUAL_ID:

+			return createSequentialUnit_3026(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleInputPort7EditPart.VISUAL_ID:

+			return createSingleInputPort_3027(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort8EditPart.VISUAL_ID:

+			return createMultiInputPort_3028(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnit5EditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_3029(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionalUnit2EditPart.VISUAL_ID:

+			return createConditionalUnit_3030(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleInputPort8EditPart.VISUAL_ID:

+			return createSingleInputPort_3031(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiInputPort9EditPart.VISUAL_ID:

+			return createMultiInputPort_3032(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnit6EditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_3033(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case AtomicUnit2EditPart.VISUAL_ID:

+			return createAtomicUnit_3034(domainElement, containerView, index,

+					persisted, preferencesHint);

+		case SingleInputPort9EditPart.VISUAL_ID:

+			return createSingleInputPort_3035(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnit3EditPart.VISUAL_ID:

+			return createParallelQueuedUnit_3036(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnit4EditPart.VISUAL_ID:

+			return createParallelQueuedUnit_3037(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFeatureUnit2EditPart.VISUAL_ID:

+			return createSingleFeatureUnit_3038(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFeatureUnit2EditPart.VISUAL_ID:

+			return createMultiFeatureUnit_3039(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFilterUnit2EditPart.VISUAL_ID:

+			return createSingleFilterUnit_3040(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFilterUnit2EditPart.VISUAL_ID:

+			return createMultiFilterUnit_3041(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnit3EditPart.VISUAL_ID:

+			return createSingleQueuedUnit_3042(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnit5EditPart.VISUAL_ID:

+			return createParallelQueuedUnit_3043(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SequentialUnit3EditPart.VISUAL_ID:

+			return createSequentialUnit_3044(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnit6EditPart.VISUAL_ID:

+			return createParallelQueuedUnit_3045(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionalUnit3EditPart.VISUAL_ID:

+			return createConditionalUnit_3046(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case CartesianQueuedUnit7EditPart.VISUAL_ID:

+			return createCartesianQueuedUnit_3047(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ParallelQueuedUnit7EditPart.VISUAL_ID:

+			return createParallelQueuedUnit_3048(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case AtomicUnit3EditPart.VISUAL_ID:

+			return createAtomicUnit_3049(domainElement, containerView, index,

+					persisted, preferencesHint);

+		case SingleFeatureUnit3EditPart.VISUAL_ID:

+			return createSingleFeatureUnit_3050(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFeatureUnit3EditPart.VISUAL_ID:

+			return createMultiFeatureUnit_3051(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFilterUnit3EditPart.VISUAL_ID:

+			return createSingleFilterUnit_3052(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFilterUnit3EditPart.VISUAL_ID:

+			return createMultiFilterUnit_3053(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnit4EditPart.VISUAL_ID:

+			return createSingleQueuedUnit_3054(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFeatureUnit4EditPart.VISUAL_ID:

+			return createSingleFeatureUnit_3055(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFeatureUnit4EditPart.VISUAL_ID:

+			return createMultiFeatureUnit_3056(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFilterUnit4EditPart.VISUAL_ID:

+			return createSingleFilterUnit_3057(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFilterUnit4EditPart.VISUAL_ID:

+			return createMultiFilterUnit_3058(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnit5EditPart.VISUAL_ID:

+			return createSingleQueuedUnit_3059(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SequentialUnit4EditPart.VISUAL_ID:

+			return createSequentialUnit_3060(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFeatureUnit5EditPart.VISUAL_ID:

+			return createSingleFeatureUnit_3061(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFeatureUnit5EditPart.VISUAL_ID:

+			return createMultiFeatureUnit_3062(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleFilterUnit5EditPart.VISUAL_ID:

+			return createSingleFilterUnit_3063(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case MultiFilterUnit5EditPart.VISUAL_ID:

+			return createMultiFilterUnit_3064(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnit6EditPart.VISUAL_ID:

+			return createSingleQueuedUnit_3065(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionalUnit4EditPart.VISUAL_ID:

+			return createConditionalUnit_3066(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SingleQueuedUnit7EditPart.VISUAL_ID:

+			return createSingleQueuedUnit_3067(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case AtomicUnit4EditPart.VISUAL_ID:

+			return createAtomicUnit_3068(domainElement, containerView, index,

+					persisted, preferencesHint);

+		case SequentialUnit5EditPart.VISUAL_ID:

+			return createSequentialUnit_3069(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SequentialUnit6EditPart.VISUAL_ID:

+			return createSequentialUnit_3070(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionalUnit5EditPart.VISUAL_ID:

+			return createConditionalUnit_3071(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionalUnit6EditPart.VISUAL_ID:

+			return createConditionalUnit_3072(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case SequentialUnit7EditPart.VISUAL_ID:

+			return createSequentialUnit_3073(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case AtomicUnit5EditPart.VISUAL_ID:

+			return createAtomicUnit_3074(domainElement, containerView, index,

+					persisted, preferencesHint);

+		case ConditionalUnit7EditPart.VISUAL_ID:

+			return createConditionalUnit_3075(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case ConditionCheckEditPart.VISUAL_ID:

+			return createConditionCheck_3076(domainElement, containerView,

+					index, persisted, preferencesHint);

+		case AtomicUnit6EditPart.VISUAL_ID:

+			return createAtomicUnit_3077(domainElement, containerView, index,

+					persisted, preferencesHint);

+		case AtomicUnit7EditPart.VISUAL_ID:

+			return createAtomicUnit_3078(domainElement, containerView, index,

+					persisted, preferencesHint);

+		}

+		// can't happen, provided #provides(CreateNodeViewOperation) is correct

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Edge createEdge(IAdaptable semanticAdapter, View containerView,

+			String semanticHint, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		IElementType elementType = getSemanticElementType(semanticAdapter);

+		String elementTypeHint = ((IHintedType) elementType).getSemanticHint();

+		switch (ComrelVisualIDRegistry.getVisualID(elementTypeHint)) {

+		case SinglePortMappingEditPart.VISUAL_ID:

+			return createSinglePortMapping_4001(

+					getSemanticElement(semanticAdapter), containerView, index,

+					persisted, preferencesHint);

+		case MultiPortMappingEditPart.VISUAL_ID:

+			return createMultiPortMapping_4002(

+					getSemanticElement(semanticAdapter), containerView, index,

+					persisted, preferencesHint);

+		case MultiSinglePortMappingEditPart.VISUAL_ID:

+			return createMultiSinglePortMapping_4003(

+					getSemanticElement(semanticAdapter), containerView, index,

+					persisted, preferencesHint);

+		}

+		// can never happen, provided #provides(CreateEdgeViewOperation) is correct

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_2001(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPortEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5001 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameTypeEditPart.VISUAL_ID));

+		label5001.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5001 = (Location) label5001.getLayoutConstraint();

+		location5001.setX(0);

+		location5001.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_2002(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5080 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_2003(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5081 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_2004(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5082 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_2005(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5083 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrictEditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_2006(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5084 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameTypeEditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_2007(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		stampShortcut(containerView, node);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5085 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelTypeEditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3001(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5002 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType2EditPart.VISUAL_ID));

+		label5002.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5002 = (Location) label5002.getLayoutConstraint();

+		location5002.setX(0);

+		location5002.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3002(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPortEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5003 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameTypeEditPart.VISUAL_ID));

+		label5003.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5003 = (Location) label5003.getLayoutConstraint();

+		location5003.setX(0);

+		location5003.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_3003(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5079 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_3004(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5078 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3005(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5004 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType3EditPart.VISUAL_ID));

+		label5004.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5004 = (Location) label5004.getLayoutConstraint();

+		location5004.setX(0);

+		location5004.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3006(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5005 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType2EditPart.VISUAL_ID));

+		label5005.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5005 = (Location) label5005.getLayoutConstraint();

+		location5005.setX(0);

+		location5005.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_3007(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5077 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFeatureUnit_3008(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5009 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameTypeEditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3009(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5006 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType4EditPart.VISUAL_ID));

+		label5006.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5006 = (Location) label5006.getLayoutConstraint();

+		location5006.setX(0);

+		location5006.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3010(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5007 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType3EditPart.VISUAL_ID));

+		label5007.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5007 = (Location) label5007.getLayoutConstraint();

+		location5007.setX(0);

+		location5007.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleOutputPort_3011(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleOutputPortEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5008 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleOutputPortNameTypeEditPart.VISUAL_ID));

+		label5008.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5008 = (Location) label5008.getLayoutConstraint();

+		location5008.setX(0);

+		location5008.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFeatureUnit_3012(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5013 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameTypeEditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3013(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5010 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType5EditPart.VISUAL_ID));

+		label5010.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5010 = (Location) label5010.getLayoutConstraint();

+		location5010.setX(0);

+		location5010.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3014(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5011 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType4EditPart.VISUAL_ID));

+		label5011.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5011 = (Location) label5011.getLayoutConstraint();

+		location5011.setX(0);

+		location5011.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiOutputPort_3015(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiOutputPortEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5012 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiOutputPortNameTypeEditPart.VISUAL_ID));

+		label5012.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5012 = (Location) label5012.getLayoutConstraint();

+		location5012.setX(0);

+		location5012.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFilterUnit_3016(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFilterUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5016 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameTypeEditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3017(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5014 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType5EditPart.VISUAL_ID));

+		label5014.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5014 = (Location) label5014.getLayoutConstraint();

+		location5014.setX(0);

+		location5014.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleOutputPort_3018(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleOutputPort2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5015 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleOutputPortNameType2EditPart.VISUAL_ID));

+		label5015.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5015 = (Location) label5015.getLayoutConstraint();

+		location5015.setX(0);

+		location5015.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFilterUnit_3019(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFilterUnitEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5019 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameTypeEditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3020(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5017 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType6EditPart.VISUAL_ID));

+		label5017.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5017 = (Location) label5017.getLayoutConstraint();

+		location5017.setX(0);

+		location5017.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiOutputPort_3021(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiOutputPort2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5018 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiOutputPortNameType2EditPart.VISUAL_ID));

+		label5018.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5018 = (Location) label5018.getLayoutConstraint();

+		location5018.setX(0);

+		location5018.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_3022(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5076 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3023(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5020 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType6EditPart.VISUAL_ID));

+		label5020.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5020 = (Location) label5020.getLayoutConstraint();

+		location5020.setX(0);

+		location5020.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3024(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5021 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType7EditPart.VISUAL_ID));

+		label5021.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5021 = (Location) label5021.getLayoutConstraint();

+		location5021.setX(0);

+		location5021.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_3025(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5075 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_3026(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5074 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrict2EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3027(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5022 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType7EditPart.VISUAL_ID));

+		label5022.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5022 = (Location) label5022.getLayoutConstraint();

+		location5022.setX(0);

+		location5022.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3028(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort8EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5023 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType8EditPart.VISUAL_ID));

+		label5023.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5023 = (Location) label5023.getLayoutConstraint();

+		location5023.setX(0);

+		location5023.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_3029(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5073 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_3030(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5072 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType2EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartmentEditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3031(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort8EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5024 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType8EditPart.VISUAL_ID));

+		label5024.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5024 = (Location) label5024.getLayoutConstraint();

+		location5024.setX(0);

+		location5024.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiInputPort_3032(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Node node = NotationFactory.eINSTANCE.createNode();

+		node.getStyles()

+				.add(NotationFactory.eINSTANCE.createDescriptionStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		node.getStyles().add(NotationFactory.eINSTANCE.createFillStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiInputPort9EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5025 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiInputPortNameType9EditPart.VISUAL_ID));

+		label5025.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5025 = (Location) label5025.getLayoutConstraint();

+		location5025.setX(0);

+		location5025.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_3033(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnit6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5028 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_3034(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5027 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType2EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleInputPort_3035(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleInputPort9EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5026 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleInputPortNameType9EditPart.VISUAL_ID));

+		label5026.setLayoutConstraint(NotationFactory.eINSTANCE

+				.createLocation());

+		Location location5026 = (Location) label5026.getLayoutConstraint();

+		location5026.setX(0);

+		location5026.setY(5);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_3036(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5071 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_3037(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5070 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFeatureUnit_3038(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5029 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType2EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFeatureUnit_3039(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5030 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType2EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFilterUnit_3040(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFilterUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5031 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType2EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFilterUnit_3041(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFilterUnit2EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5032 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType2EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_3042(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5069 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_3043(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5068 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_3044(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5067 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrict3EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_3045(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnit6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5066 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_3046(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5065 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType3EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartment2EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createCartesianQueuedUnit_3047(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(CartesianQueuedUnit7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5033 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createParallelQueuedUnit_3048(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ParallelQueuedUnit7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5035 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_3049(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5034 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType3EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFeatureUnit_3050(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5036 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType3EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFeatureUnit_3051(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5037 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType3EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFilterUnit_3052(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFilterUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5038 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType3EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFilterUnit_3053(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFilterUnit3EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5039 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType3EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_3054(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5064 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFeatureUnit_3055(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5040 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType4EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFeatureUnit_3056(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5041 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType4EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFilterUnit_3057(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFilterUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5042 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType4EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFilterUnit_3058(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFilterUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5043 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType4EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_3059(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5063 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_3060(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5062 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrict4EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFeatureUnit_3061(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFeatureUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5044 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFeatureUnitNameType5EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFeatureUnit_3062(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFeatureUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5045 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFeatureUnitNameType5EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleFilterUnit_3063(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleFilterUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5046 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(SingleFilterUnitNameType5EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createMultiFilterUnit_3064(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(MultiFilterUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5047 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(MultiFilterUnitNameType5EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_3065(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnit6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5061 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_3066(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5060 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType4EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartment3EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSingleQueuedUnit_3067(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SingleQueuedUnit7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5049 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_3068(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnit4EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5048 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType4EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_3069(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5059 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrict5EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_3070(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnit6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5058 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrict6EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_3071(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5057 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType5EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartment4EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_3072(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnit6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5056 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType6EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartment5EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createSequentialUnit_3073(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(SequentialUnit7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5051 = createLabel(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitNameTypeLblStrict7EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_3074(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnit5EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5050 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType5EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionalUnit_3075(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.getStyles().add(

+				NotationFactory.eINSTANCE.createHintedDiagramLinkStyle());

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionalUnit7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5055 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitNameType7EditPart.VISUAL_ID));

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitIfCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitThenCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		createCompartment(

+				node,

+				ComrelVisualIDRegistry

+						.getType(ConditionalUnitConditionalUnitElseCompartment6EditPart.VISUAL_ID),

+				true, false, false, false);

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createConditionCheck_3076(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(ConditionCheckEditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5052 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(ConditionCheckNameTypeSpecEditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_3077(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnit6EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5053 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType6EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Node createAtomicUnit_3078(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Shape node = NotationFactory.eINSTANCE.createShape();

+		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());

+		node.setType(ComrelVisualIDRegistry

+				.getType(AtomicUnit7EditPart.VISUAL_ID));

+		ViewUtil.insertChildView(containerView, node, index, persisted);

+		node.setElement(domainElement);

+		// initializeFromPreferences 

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle nodeFontStyle = (FontStyle) node

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (nodeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			nodeFontStyle.setFontName(fontData.getName());

+			nodeFontStyle.setFontHeight(fontData.getHeight());

+			nodeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			nodeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			nodeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		org.eclipse.swt.graphics.RGB fillRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_FILL_COLOR);

+		ViewUtil.setStructuralFeatureValue(node,

+				NotationPackage.eINSTANCE.getFillStyle_FillColor(),

+				FigureUtilities.RGBToInteger(fillRGB));

+		Node label5054 = createLabel(node,

+				ComrelVisualIDRegistry

+						.getType(AtomicUnitLabelType7EditPart.VISUAL_ID));

+		return node;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Edge createSinglePortMapping_4001(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Connector edge = NotationFactory.eINSTANCE.createConnector();

+		edge.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		RelativeBendpoints bendpoints = NotationFactory.eINSTANCE

+				.createRelativeBendpoints();

+		ArrayList<RelativeBendpoint> points = new ArrayList<RelativeBendpoint>(

+				2);

+		points.add(new RelativeBendpoint());

+		points.add(new RelativeBendpoint());

+		bendpoints.setPoints(points);

+		edge.setBendpoints(bendpoints);

+		ViewUtil.insertChildView(containerView, edge, index, persisted);

+		edge.setType(ComrelVisualIDRegistry

+				.getType(SinglePortMappingEditPart.VISUAL_ID));

+		edge.setElement(domainElement);

+		// initializePreferences

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(edge,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle edgeFontStyle = (FontStyle) edge

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (edgeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			edgeFontStyle.setFontName(fontData.getName());

+			edgeFontStyle.setFontHeight(fontData.getHeight());

+			edgeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			edgeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			edgeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		Routing routing = Routing.get(prefStore

+				.getInt(IPreferenceConstants.PREF_LINE_STYLE));

+		if (routing != null) {

+			ViewUtil.setStructuralFeatureValue(edge,

+					NotationPackage.eINSTANCE.getRoutingStyle_Routing(),

+					routing);

+		}

+		return edge;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Edge createMultiPortMapping_4002(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Connector edge = NotationFactory.eINSTANCE.createConnector();

+		edge.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		RelativeBendpoints bendpoints = NotationFactory.eINSTANCE

+				.createRelativeBendpoints();

+		ArrayList<RelativeBendpoint> points = new ArrayList<RelativeBendpoint>(

+				2);

+		points.add(new RelativeBendpoint());

+		points.add(new RelativeBendpoint());

+		bendpoints.setPoints(points);

+		edge.setBendpoints(bendpoints);

+		ViewUtil.insertChildView(containerView, edge, index, persisted);

+		edge.setType(ComrelVisualIDRegistry

+				.getType(MultiPortMappingEditPart.VISUAL_ID));

+		edge.setElement(domainElement);

+		// initializePreferences

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(edge,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle edgeFontStyle = (FontStyle) edge

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (edgeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			edgeFontStyle.setFontName(fontData.getName());

+			edgeFontStyle.setFontHeight(fontData.getHeight());

+			edgeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			edgeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			edgeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		Routing routing = Routing.get(prefStore

+				.getInt(IPreferenceConstants.PREF_LINE_STYLE));

+		if (routing != null) {

+			ViewUtil.setStructuralFeatureValue(edge,

+					NotationPackage.eINSTANCE.getRoutingStyle_Routing(),

+					routing);

+		}

+		return edge;

+	}

+

+	/**

+	 * @generated

+	 */

+	public Edge createMultiSinglePortMapping_4003(EObject domainElement,

+			View containerView, int index, boolean persisted,

+			PreferencesHint preferencesHint) {

+		Connector edge = NotationFactory.eINSTANCE.createConnector();

+		edge.getStyles().add(NotationFactory.eINSTANCE.createFontStyle());

+		RelativeBendpoints bendpoints = NotationFactory.eINSTANCE

+				.createRelativeBendpoints();

+		ArrayList<RelativeBendpoint> points = new ArrayList<RelativeBendpoint>(

+				2);

+		points.add(new RelativeBendpoint());

+		points.add(new RelativeBendpoint());

+		bendpoints.setPoints(points);

+		edge.setBendpoints(bendpoints);

+		ViewUtil.insertChildView(containerView, edge, index, persisted);

+		edge.setType(ComrelVisualIDRegistry

+				.getType(MultiSinglePortMappingEditPart.VISUAL_ID));

+		edge.setElement(domainElement);

+		// initializePreferences

+		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint

+				.getPreferenceStore();

+

+		org.eclipse.swt.graphics.RGB lineRGB = PreferenceConverter.getColor(

+				prefStore, IPreferenceConstants.PREF_LINE_COLOR);

+		ViewUtil.setStructuralFeatureValue(edge,

+				NotationPackage.eINSTANCE.getLineStyle_LineColor(),

+				FigureUtilities.RGBToInteger(lineRGB));

+		FontStyle edgeFontStyle = (FontStyle) edge

+				.getStyle(NotationPackage.Literals.FONT_STYLE);

+		if (edgeFontStyle != null) {

+			FontData fontData = PreferenceConverter.getFontData(prefStore,

+					IPreferenceConstants.PREF_DEFAULT_FONT);

+			edgeFontStyle.setFontName(fontData.getName());

+			edgeFontStyle.setFontHeight(fontData.getHeight());

+			edgeFontStyle.setBold((fontData.getStyle() & SWT.BOLD) != 0);

+			edgeFontStyle.setItalic((fontData.getStyle() & SWT.ITALIC) != 0);

+			org.eclipse.swt.graphics.RGB fontRGB = PreferenceConverter

+					.getColor(prefStore, IPreferenceConstants.PREF_FONT_COLOR);

+			edgeFontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)

+					.intValue());

+		}

+		Routing routing = Routing.get(prefStore

+				.getInt(IPreferenceConstants.PREF_LINE_STYLE));

+		if (routing != null) {

+			ViewUtil.setStructuralFeatureValue(edge,

+					NotationPackage.eINSTANCE.getRoutingStyle_Routing(),

+					routing);

+		}

+		return edge;

+	}

+

+	/**

+	 * @generated

+	 */

+	private void stampShortcut(View containerView, Node target) {

+		if (!CompositeRefactoringEditPart.MODEL_ID

+				.equals(ComrelVisualIDRegistry.getModelID(containerView))) {

+			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE

+					.createEAnnotation();

+			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$

+			shortcutAnnotation.getDetails().put(

+					"modelID", CompositeRefactoringEditPart.MODEL_ID); //$NON-NLS-1$

+			target.getEAnnotations().add(shortcutAnnotation);

+		}

+	}

+

+	/**

+	 * @generated

+	 */

+	private Node createLabel(View owner, String hint) {

+		DecorationNode rv = NotationFactory.eINSTANCE.createDecorationNode();

+		rv.setType(hint);

+		ViewUtil.insertChildView(owner, rv, ViewUtil.APPEND, true);

+		return rv;

+	}

+

+	/**

+	 * @generated

+	 */

+	private Node createCompartment(View owner, String hint,

+			boolean canCollapse, boolean hasTitle, boolean canSort,

+			boolean canFilter) {

+		//SemanticListCompartment rv = NotationFactory.eINSTANCE.createSemanticListCompartment();

+		//rv.setShowTitle(showTitle);

+		//rv.setCollapsed(isCollapsed);

+		Node rv;

+		if (canCollapse) {

+			rv = NotationFactory.eINSTANCE.createBasicCompartment();

+		} else {

+			rv = NotationFactory.eINSTANCE.createDecorationNode();

+		}

+		if (hasTitle) {

+			TitleStyle ts = NotationFactory.eINSTANCE.createTitleStyle();

+			ts.setShowTitle(true);

+			rv.getStyles().add(ts);

+		}

+		if (canSort) {

+			rv.getStyles().add(NotationFactory.eINSTANCE.createSortingStyle());

+		}

+		if (canFilter) {

+			rv.getStyles()

+					.add(NotationFactory.eINSTANCE.createFilteringStyle());

+		}

+		rv.setType(hint);

+		ViewUtil.insertChildView(owner, rv, ViewUtil.APPEND, true);

+		return rv;

+	}

+

+	/**

+	 * @generated

+	 */

+	private EObject getSemanticElement(IAdaptable semanticAdapter) {

+		if (semanticAdapter == null) {

+			return null;

+		}

+		EObject eObject = (EObject) semanticAdapter.getAdapter(EObject.class);

+		if (eObject != null) {

+			return EMFCoreUtil.resolve(

+					TransactionUtil.getEditingDomain(eObject), eObject);

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IElementType getSemanticElementType(IAdaptable semanticAdapter) {

+		if (semanticAdapter == null) {

+			return null;

+		}

+		return (IElementType) semanticAdapter.getAdapter(IElementType.class);

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ElementInitializers.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ElementInitializers.java
new file mode 100644
index 0000000..1d63a77
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/providers/ElementInitializers.java
@@ -0,0 +1,29 @@
+/*

+ * 

+ */

+package comrel.diagram.providers;

+

+import comrel.diagram.part.ComrelDiagramEditorPlugin;

+

+/**

+ * @generated

+ */

+public class ElementInitializers {

+

+	protected ElementInitializers() {

+		// use #getInstance to access cached instance

+	}

+

+	/**

+	 * @generated

+	 */

+	public static ElementInitializers getInstance() {

+		ElementInitializers cached = ComrelDiagramEditorPlugin.getInstance()

+				.getElementInitializers();

+		if (cached == null) {

+			ComrelDiagramEditorPlugin.getInstance().setElementInitializers(

+					cached = new ElementInitializers());

+		}

+		return cached;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/sheet/ComrelPropertySection.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/sheet/ComrelPropertySection.java
new file mode 100644
index 0000000..ccff61e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/sheet/ComrelPropertySection.java
@@ -0,0 +1,120 @@
+/*

+ * 

+ */

+package comrel.diagram.sheet;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.ui.provider.PropertySource;

+import org.eclipse.emf.transaction.TransactionalEditingDomain;

+import org.eclipse.emf.transaction.util.TransactionUtil;

+import org.eclipse.gef.EditPart;

+import org.eclipse.gmf.runtime.diagram.ui.properties.sections.AdvancedPropertySection;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.views.properties.IPropertySource;

+import org.eclipse.ui.views.properties.IPropertySourceProvider;

+

+/**

+ * @generated

+ */

+public class ComrelPropertySection extends AdvancedPropertySection implements

+		IPropertySourceProvider {

+

+	/**

+	 * @generated

+	 */

+	public IPropertySource getPropertySource(Object object) {

+		if (object instanceof IPropertySource) {

+			return (IPropertySource) object;

+		}

+		AdapterFactory af = getAdapterFactory(object);

+		if (af != null) {

+			IItemPropertySource ips = (IItemPropertySource) af.adapt(object,

+					IItemPropertySource.class);

+			if (ips != null) {

+				return new PropertySource(object, ips);

+			}

+		}

+		if (object instanceof IAdaptable) {

+			return (IPropertySource) ((IAdaptable) object)

+					.getAdapter(IPropertySource.class);

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	protected IPropertySourceProvider getPropertySourceProvider() {

+		return this;

+	}

+

+	/**

+	 * Modify/unwrap selection.

+	 * @generated

+	 */

+	protected Object transformSelection(Object selected) {

+

+		if (selected instanceof EditPart) {

+			Object model = ((EditPart) selected).getModel();

+			return model instanceof View ? ((View) model).getElement() : null;

+		}

+		if (selected instanceof View) {

+			return ((View) selected).getElement();

+		}

+		if (selected instanceof IAdaptable) {

+			View view = (View) ((IAdaptable) selected).getAdapter(View.class);

+			if (view != null) {

+				return view.getElement();

+			}

+		}

+		return selected;

+	}

+

+	/**

+	 * @generated

+	 */

+	public void setInput(IWorkbenchPart part, ISelection selection) {

+		if (selection.isEmpty()

+				|| false == selection instanceof StructuredSelection) {

+			super.setInput(part, selection);

+			return;

+		}

+		final StructuredSelection structuredSelection = ((StructuredSelection) selection);

+		ArrayList transformedSelection = new ArrayList(

+				structuredSelection.size());

+		for (Iterator it = structuredSelection.iterator(); it.hasNext();) {

+			Object r = transformSelection(it.next());

+			if (r != null) {

+				transformedSelection.add(r);

+			}

+		}

+		super.setInput(part, new StructuredSelection(transformedSelection));

+	}

+

+	/**

+	 * @generated

+	 */

+	protected AdapterFactory getAdapterFactory(Object object) {

+		if (getEditingDomain() instanceof AdapterFactoryEditingDomain) {

+			return ((AdapterFactoryEditingDomain) getEditingDomain())

+					.getAdapterFactory();

+		}

+		TransactionalEditingDomain editingDomain = TransactionUtil

+				.getEditingDomain(object);

+		if (editingDomain != null) {

+			return ((AdapterFactoryEditingDomain) editingDomain)

+					.getAdapterFactory();

+		}

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/sheet/ComrelSheetLabelProvider.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/sheet/ComrelSheetLabelProvider.java
new file mode 100644
index 0000000..7564e31
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/sheet/ComrelSheetLabelProvider.java
@@ -0,0 +1,84 @@
+/*

+ * 

+ */

+package comrel.diagram.sheet;

+

+import org.eclipse.core.runtime.IAdaptable;

+import org.eclipse.gmf.runtime.emf.type.core.IElementType;

+import org.eclipse.gmf.runtime.notation.View;

+import org.eclipse.jface.viewers.BaseLabelProvider;

+import org.eclipse.jface.viewers.ILabelProvider;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.swt.graphics.Image;

+

+import comrel.diagram.navigator.ComrelNavigatorGroup;

+import comrel.diagram.part.ComrelVisualIDRegistry;

+import comrel.diagram.providers.ComrelElementTypes;

+

+/**

+ * @generated

+ */

+public class ComrelSheetLabelProvider extends BaseLabelProvider implements

+		ILabelProvider {

+

+	/**

+	 * @generated

+	 */

+	public String getText(Object element) {

+		element = unwrap(element);

+		if (element instanceof ComrelNavigatorGroup) {

+			return ((ComrelNavigatorGroup) element).getGroupName();

+		}

+		IElementType etype = getElementType(getView(element));

+		return etype == null ? "" : etype.getDisplayName();

+	}

+

+	/**

+	 * @generated

+	 */

+	public Image getImage(Object element) {

+		IElementType etype = getElementType(getView(unwrap(element)));

+		return etype == null ? null : ComrelElementTypes.getImage(etype);

+	}

+

+	/**

+	 * @generated

+	 */

+	private Object unwrap(Object element) {

+		if (element instanceof IStructuredSelection) {

+			return ((IStructuredSelection) element).getFirstElement();

+		}

+		return element;

+	}

+

+	/**

+	 * @generated

+	 */

+	private View getView(Object element) {

+		if (element instanceof View) {

+			return (View) element;

+		}

+		if (element instanceof IAdaptable) {

+			return (View) ((IAdaptable) element).getAdapter(View.class);

+		}

+		return null;

+	}

+

+	/**

+	 * @generated

+	 */

+	private IElementType getElementType(View view) {

+		// For intermediate views climb up the containment hierarchy to find the one associated with an element type.

+		while (view != null) {

+			int vid = ComrelVisualIDRegistry.getVisualID(view);

+			IElementType etype = ComrelElementTypes.getElementType(vid);

+			if (etype != null) {

+				return etype;

+			}

+			view = view.eContainer() instanceof View ? (View) view.eContainer()

+					: null;

+		}

+		return null;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/.classpath b/org.eclipse.emf.refactor.comrel.edit/.classpath
new file mode 100644
index 0000000..ed2bc12
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.emf.refactor.comrel.edit/.project b/org.eclipse.emf.refactor.comrel.edit/.project
new file mode 100644
index 0000000..8321e99
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.emf.refactor.comrel.edit</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.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+	</natures>

+</projectDescription>

diff --git a/org.eclipse.emf.refactor.comrel.edit/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.comrel.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..93d3391
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: CoMReL Edit

+Bundle-SymbolicName: org.eclipse.emf.refactor.comrel.edit;singleton:=true

+Bundle-Version: 0.9.0

+Bundle-ClassPath: .

+Bundle-Activator: comrel.provider.ComrelEditPlugin$Implementation

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: comrel.provider

+Require-Bundle: org.eclipse.core.runtime,

+ org.eclipse.emf.refactor.comrel;visibility:=reexport,

+ org.eclipse.emf.edit;visibility:=reexport

+Bundle-ActivationPolicy: lazy

diff --git a/org.eclipse.emf.refactor.comrel.edit/bin/.gitignore b/org.eclipse.emf.refactor.comrel.edit/bin/.gitignore
new file mode 100644
index 0000000..508dbce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/bin/.gitignore
@@ -0,0 +1 @@
+/comrel
diff --git a/org.eclipse.emf.refactor.comrel.edit/build.properties b/org.eclipse.emf.refactor.comrel.edit/build.properties
new file mode 100644
index 0000000..5dd2083
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/build.properties
@@ -0,0 +1,16 @@
+

+# <copyright>

+# </copyright>

+#

+# $Id$

+

+bin.includes = .,\

+               icons/,\

+               META-INF/,\

+               plugin.xml,\

+               plugin.properties,\

+               src/,\

+               bin/

+jars.compile.order = .

+source.. = src/

+output.. = bin/

diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateAtomicUnit_inputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateAtomicUnit_inputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..5e6c9c1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateAtomicUnit_inputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_MultiFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_MultiFeatureUnit.gif
new file mode 100644
index 0000000..5694faf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_MultiFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_MultiFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_MultiFilterUnit.gif
new file mode 100644
index 0000000..946cda2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_MultiFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_SingleFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_SingleFeatureUnit.gif
new file mode 100644
index 0000000..621468e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_SingleFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_SingleFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_SingleFilterUnit.gif
new file mode 100644
index 0000000..7a6da4c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_helperUnits_SingleFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_multiInputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_multiInputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..c69e87c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_multiInputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_AtomicUnit.gif
new file mode 100644
index 0000000..7a6da4c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..e01fab4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_ConditionalUnit.gif
new file mode 100644
index 0000000..621468e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..e343f28
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_SequentialUnit.gif
new file mode 100644
index 0000000..8f7d7ca
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_SingleQueuedUnit.gif
new file mode 100644
index 0000000..5f2cec7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_refactoringUnit_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_singleInputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_singleInputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..af3c30f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCartesianQueuedUnit_singleInputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_MultiFeatureHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_MultiFeatureHelper.gif
new file mode 100644
index 0000000..29d68a2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_MultiFeatureHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_MultiFilterHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_MultiFilterHelper.gif
new file mode 100644
index 0000000..57826cc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_MultiFilterHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_SingleFeatureHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_SingleFeatureHelper.gif
new file mode 100644
index 0000000..1fedc13
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_SingleFeatureHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_SingleFilterHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_SingleFilterHelper.gif
new file mode 100644
index 0000000..01f8ed6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_helper_SingleFilterHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_AtomicUnit.gif
new file mode 100644
index 0000000..0064b04
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..dcbb9e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_ConditionalUnit.gif
new file mode 100644
index 0000000..ba1638a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..9cdf500
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_SequentialUnit.gif
new file mode 100644
index 0000000..3248e68
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_SingleQueuedUnit.gif
new file mode 100644
index 0000000..efdd202
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_mainRefactoringUnit_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_modelRefactorings_CompositeRefactoring.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_modelRefactorings_CompositeRefactoring.gif
new file mode 100644
index 0000000..6e14d42
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_modelRefactorings_CompositeRefactoring.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_modelRefactorings_ModelRefactoring.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_modelRefactorings_ModelRefactoring.gif
new file mode 100644
index 0000000..9206001
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_modelRefactorings_ModelRefactoring.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_MultiPortMapping.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_MultiPortMapping.gif
new file mode 100644
index 0000000..9cdf500
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_MultiPortMapping.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_MultiSinglePortMapping.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_MultiSinglePortMapping.gif
new file mode 100644
index 0000000..10186e9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_MultiSinglePortMapping.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_SinglePortMapping.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_SinglePortMapping.gif
new file mode 100644
index 0000000..6e14d42
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateCompositeRefactoring_portMappings_SinglePortMapping.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_AtomicUnit.gif
new file mode 100644
index 0000000..459f97d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..7550e1d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_ConditionalUnit.gif
new file mode 100644
index 0000000..fd7e5e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..b52554e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_SequentialUnit.gif
new file mode 100644
index 0000000..4388857
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_SingleQueuedUnit.gif
new file mode 100644
index 0000000..b73db01
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_else_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_MultiFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_MultiFeatureUnit.gif
new file mode 100644
index 0000000..2485066
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_MultiFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_MultiFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_MultiFilterUnit.gif
new file mode 100644
index 0000000..1fb2300
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_MultiFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_SingleFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_SingleFeatureUnit.gif
new file mode 100644
index 0000000..fd7e5e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_SingleFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_SingleFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_SingleFilterUnit.gif
new file mode 100644
index 0000000..459f97d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_helperUnits_SingleFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_if_ConditionCheck.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_if_ConditionCheck.gif
new file mode 100644
index 0000000..b52554e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_if_ConditionCheck.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_inputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_inputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..dcdeb6e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_inputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_inputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_inputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..938b383
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_inputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_AtomicUnit.gif
new file mode 100644
index 0000000..459f97d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..7550e1d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_ConditionalUnit.gif
new file mode 100644
index 0000000..fd7e5e1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..b52554e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_SequentialUnit.gif
new file mode 100644
index 0000000..4388857
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_SingleQueuedUnit.gif
new file mode 100644
index 0000000..b73db01
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateConditionalUnit_then_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFeatureHelper_inputPort_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFeatureHelper_inputPort_SingleInputPort.gif
new file mode 100644
index 0000000..d51b362
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFeatureHelper_inputPort_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFeatureHelper_secondaryInputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFeatureHelper_secondaryInputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..1cf5062
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFeatureHelper_secondaryInputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFilterHelper_inputPort_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFilterHelper_inputPort_MultiInputPort.gif
new file mode 100644
index 0000000..7e21005
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateFilterHelper_inputPort_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateModelRefactoring_inputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateModelRefactoring_inputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..776368e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateModelRefactoring_inputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureHelper_outputPort_MultiOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureHelper_outputPort_MultiOutputPort.gif
new file mode 100644
index 0000000..9c04b67
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureHelper_outputPort_MultiOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_inputPort_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_inputPort_SingleInputPort.gif
new file mode 100644
index 0000000..b3520a5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_inputPort_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_outputPort_MultiOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_outputPort_MultiOutputPort.gif
new file mode 100644
index 0000000..532796f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_outputPort_MultiOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_secondaryInputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_secondaryInputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..7e21005
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFeatureUnit_secondaryInputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterHelper_outputPort_MultiOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterHelper_outputPort_MultiOutputPort.gif
new file mode 100644
index 0000000..82807fa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterHelper_outputPort_MultiOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterUnit_inputPort_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterUnit_inputPort_MultiInputPort.gif
new file mode 100644
index 0000000..051fac7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterUnit_inputPort_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterUnit_outputPort_MultiOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterUnit_outputPort_MultiOutputPort.gif
new file mode 100644
index 0000000..f5718d5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateMultiFilterUnit_outputPort_MultiOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_MultiFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_MultiFeatureUnit.gif
new file mode 100644
index 0000000..69db0cd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_MultiFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_MultiFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_MultiFilterUnit.gif
new file mode 100644
index 0000000..4fdd589
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_MultiFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_SingleFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_SingleFeatureUnit.gif
new file mode 100644
index 0000000..2678931
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_SingleFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_SingleFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_SingleFilterUnit.gif
new file mode 100644
index 0000000..1e01c87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_helperUnits_SingleFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_multiInputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_multiInputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..ba3abb5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_multiInputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_AtomicUnit.gif
new file mode 100644
index 0000000..1e01c87
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..4023703
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_ConditionalUnit.gif
new file mode 100644
index 0000000..2678931
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..90b42b5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_SequentialUnit.gif
new file mode 100644
index 0000000..50ac6da
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_SingleQueuedUnit.gif
new file mode 100644
index 0000000..9043d2a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_refactoringUnits_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_singleInputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_singleInputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..bb27d46
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateParallelQueuedUnit_singleInputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_MultiFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_MultiFeatureUnit.gif
new file mode 100644
index 0000000..49625df
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_MultiFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_MultiFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_MultiFilterUnit.gif
new file mode 100644
index 0000000..d1bf162
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_MultiFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_SingleFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_SingleFeatureUnit.gif
new file mode 100644
index 0000000..3d5488e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_SingleFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_SingleFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_SingleFilterUnit.gif
new file mode 100644
index 0000000..016ae97
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_helperUnits_SingleFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_inputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_inputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..f5be155
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_inputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_inputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_inputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..78987b0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_inputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_AtomicUnit.gif
new file mode 100644
index 0000000..016ae97
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..db9d0e3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_ConditionalUnit.gif
new file mode 100644
index 0000000..3d5488e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..cf5b650
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_SequentialUnit.gif
new file mode 100644
index 0000000..0d619ab
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_SingleQueuedUnit.gif
new file mode 100644
index 0000000..c572b64
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSequentialUnit_refactoringUnits_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureHelper_outputPort_SingleOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureHelper_outputPort_SingleOutputPort.gif
new file mode 100644
index 0000000..23ab758
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureHelper_outputPort_SingleOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_inputPort_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_inputPort_SingleInputPort.gif
new file mode 100644
index 0000000..938b383
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_inputPort_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_outputPort_SingleOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_outputPort_SingleOutputPort.gif
new file mode 100644
index 0000000..153c395
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_outputPort_SingleOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_secondaryInputPorts_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_secondaryInputPorts_MultiInputPort.gif
new file mode 100644
index 0000000..dcdeb6e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFeatureUnit_secondaryInputPorts_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterHelper_outputPort_SingleOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterHelper_outputPort_SingleOutputPort.gif
new file mode 100644
index 0000000..86be5ba
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterHelper_outputPort_SingleOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterUnit_inputPort_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterUnit_inputPort_MultiInputPort.gif
new file mode 100644
index 0000000..a461190
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterUnit_inputPort_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterUnit_outputPort_SingleOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterUnit_outputPort_SingleOutputPort.gif
new file mode 100644
index 0000000..561bc08
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleFilterUnit_outputPort_SingleOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_MultiFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_MultiFeatureUnit.gif
new file mode 100644
index 0000000..cca9f46
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_MultiFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_MultiFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_MultiFilterUnit.gif
new file mode 100644
index 0000000..59763f4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_MultiFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_SingleFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_SingleFeatureUnit.gif
new file mode 100644
index 0000000..9e275c6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_SingleFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_SingleFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_SingleFilterUnit.gif
new file mode 100644
index 0000000..9d46aad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_helperUnits_SingleFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_multiInputPort_MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_multiInputPort_MultiInputPort.gif
new file mode 100644
index 0000000..590468c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_multiInputPort_MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_AtomicUnit.gif
new file mode 100644
index 0000000..9d46aad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_CartesianQueuedUnit.gif
new file mode 100644
index 0000000..5625a64
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_ConditionalUnit.gif
new file mode 100644
index 0000000..9e275c6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_ParallelQueuedUnit.gif
new file mode 100644
index 0000000..7936184
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_SequentialUnit.gif
new file mode 100644
index 0000000..adc7111
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_SingleQueuedUnit.gif
new file mode 100644
index 0000000..8966d11
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_refactoringUnit_SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_singleInputPorts_SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_singleInputPorts_SingleInputPort.gif
new file mode 100644
index 0000000..8b2c545
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/ctool16/CreateSingleQueuedUnit_singleInputPorts_SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/AtomicUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/AtomicUnit.gif
new file mode 100644
index 0000000..be22463
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/AtomicUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/CartesianQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/CartesianQueuedUnit.gif
new file mode 100644
index 0000000..d3dc5a9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/CartesianQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/CompositeRefactoring.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/CompositeRefactoring.gif
new file mode 100644
index 0000000..45731fe
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/CompositeRefactoring.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ConditionCheck.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ConditionCheck.gif
new file mode 100644
index 0000000..7b7c428
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ConditionCheck.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ConditionalUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ConditionalUnit.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ConditionalUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ModelRefactoring.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ModelRefactoring.gif
new file mode 100644
index 0000000..1e5345f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ModelRefactoring.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFeatureHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFeatureHelper.gif
new file mode 100644
index 0000000..134551b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFeatureHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFeatureUnit.gif
new file mode 100644
index 0000000..10d2229
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFilterHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFilterHelper.gif
new file mode 100644
index 0000000..c4a8af4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFilterHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFilterUnit.gif
new file mode 100644
index 0000000..cdd3b76
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiInputPort.gif
new file mode 100644
index 0000000..cb1755a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiOutputPort.gif
new file mode 100644
index 0000000..c3370c7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiPortMapping.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiPortMapping.gif
new file mode 100644
index 0000000..7b7c428
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiPortMapping.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiSinglePortMapping.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiSinglePortMapping.gif
new file mode 100644
index 0000000..ed87474
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/MultiSinglePortMapping.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ParallelQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ParallelQueuedUnit.gif
new file mode 100644
index 0000000..7b7c428
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/ParallelQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SequentialUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SequentialUnit.gif
new file mode 100644
index 0000000..48e3cf2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SequentialUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFeatureHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFeatureHelper.gif
new file mode 100644
index 0000000..10d2229
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFeatureHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFeatureUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFeatureUnit.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFeatureUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFilterHelper.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFilterHelper.gif
new file mode 100644
index 0000000..cdd3b76
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFilterHelper.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFilterUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFilterUnit.gif
new file mode 100644
index 0000000..be22463
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleFilterUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleInputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleInputPort.gif
new file mode 100644
index 0000000..c4a8af4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleInputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleOutputPort.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleOutputPort.gif
new file mode 100644
index 0000000..33854e9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleOutputPort.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SinglePortMapping.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SinglePortMapping.gif
new file mode 100644
index 0000000..45731fe
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SinglePortMapping.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleQueuedUnit.gif b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleQueuedUnit.gif
new file mode 100644
index 0000000..c00aedf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/icons/full/obj16/SingleQueuedUnit.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.edit/plugin.properties b/org.eclipse.emf.refactor.comrel.edit/plugin.properties
new file mode 100644
index 0000000..59c0a69
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/plugin.properties
@@ -0,0 +1,164 @@
+

+# <copyright>

+# </copyright>

+#

+# $Id$

+

+pluginName = Comrel Edit Support

+providerName = www.example.org

+

+_UI_CreateChild_text = {0}

+_UI_CreateChild_text2 = {1} {0}

+_UI_CreateChild_text3 = {1}

+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature

+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.

+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.

+

+_UI_PropertyDescriptor_description = The {0} of the {1}

+

+_UI_CompositeRefactoring_type = Composite Refactoring

+_UI_NamedElement_type = Named Element

+_UI_DescribedElement_type = Described Element

+_UI_RefactoringUnit_type = Refactoring Unit

+_UI_ModelRefactoring_type = Model Refactoring

+_UI_AtomicUnit_type = Atomic Unit

+_UI_CompositeUnit_type = Composite Unit

+_UI_SequentialUnit_type = Sequential Unit

+_UI_ConditionCheck_type = Condition Check

+_UI_ConditionalUnit_type = Conditional Unit

+_UI_QueuedUnit_type = Queued Unit

+_UI_SingleQueuedUnit_type = Single Queued Unit

+_UI_TwicedQueuedUnit_type = Twiced Queued Unit

+_UI_CartesianQueuedUnit_type = Cartesian Queued Unit

+_UI_ParallelQueuedUnit_type = Parallel Queued Unit

+_UI_HelperUnit_type = Helper Unit

+_UI_FeatureUnit_type = Feature Unit

+_UI_SingleFeatureUnit_type = Single Feature Unit

+_UI_MultiFeatureUnit_type = Multi Feature Unit

+_UI_FilterUnit_type = Filter Unit

+_UI_SingleFilterUnit_type = Single Filter Unit

+_UI_MultiFilterUnit_type = Multi Filter Unit

+_UI_Helper_type = Helper

+_UI_FeatureHelper_type = Feature Helper

+_UI_SingleFeatureHelper_type = Single Feature Helper

+_UI_MultiFeatureHelper_type = Multi Feature Helper

+_UI_FilterHelper_type = Filter Helper

+_UI_SingleFilterHelper_type = Single Filter Helper

+_UI_MultiFilterHelper_type = Multi Filter Helper

+_UI_Port_type = Port

+_UI_SinglePort_type = Single Port

+_UI_MultiPort_type = Multi Port

+_UI_InputPort_type = Input Port

+_UI_OutputPort_type = Output Port

+_UI_SingleInputPort_type = Single Input Port

+_UI_MultiInputPort_type = Multi Input Port

+_UI_SingleOutputPort_type = Single Output Port

+_UI_MultiOutputPort_type = Multi Output Port

+_UI_PortMapping_type = Port Mapping

+_UI_SinglePortMapping_type = Single Port Mapping

+_UI_MultiPortMapping_type = Multi Port Mapping

+_UI_MultiSinglePortMapping_type = Multi Single Port Mapping

+_UI_Unknown_type = Object

+

+_UI_Unknown_datatype= Value

+

+_UI_CompositeRefactoring_mainRefactoringUnit_feature = Main Refactoring Unit

+_UI_CompositeRefactoring_portMappings_feature = Port Mappings

+_UI_CompositeRefactoring_modelRefactorings_feature = Model Refactorings

+_UI_CompositeRefactoring_helper_feature = Helper

+_UI_CompositeRefactoring_mappingVisualization_feature = Mapping Visualization

+_UI_CompositeRefactoring_customInitialCondition_feature = Custom Initial Condition

+_UI_CompositeRefactoring_customFinalCondition_feature = Custom Final Condition

+_UI_NamedElement_name_feature = Name

+_UI_DescribedElement_description_feature = Description

+_UI_RefactoringUnit_seqExecutionOrder_feature = Seq Execution Order

+_UI_ModelRefactoring_refId_feature = Ref Id

+_UI_ModelRefactoring_label_feature = Label

+_UI_ModelRefactoring_namespaceUri_feature = Namespace Uri

+_UI_ModelRefactoring_inputPorts_feature = Input Ports

+_UI_AtomicUnit_inputPorts_feature = Input Ports

+_UI_AtomicUnit_unitId_feature = Unit Id

+_UI_AtomicUnit_label_feature = Label

+_UI_AtomicUnit_namespaceUri_feature = Namespace Uri

+_UI_AtomicUnit_type_feature = Type

+_UI_AtomicUnit_modelRefactoring_feature = Model Refactoring

+_UI_AtomicUnit_checkInitialConditionFlag_feature = Check Initial Condition Flag

+_UI_AtomicUnit_checkFinalConditionFlag_feature = Check Final Condition Flag

+_UI_SequentialUnit_helperUnits_feature = Helper Units

+_UI_SequentialUnit_refactoringUnits_feature = Refactoring Units

+_UI_SequentialUnit_inputPorts_feature = Input Ports

+_UI_SequentialUnit_strict_feature = Strict

+_UI_SequentialUnit_type_feature = Type

+_UI_SequentialUnit_lblStrict_feature = Lbl Strict

+_UI_ConditionCheck_type_feature = Type

+_UI_ConditionCheck_spec_feature = Spec

+_UI_ConditionalUnit_if_feature = If

+_UI_ConditionalUnit_helperUnits_feature = Helper Units

+_UI_ConditionalUnit_then_feature = Then

+_UI_ConditionalUnit_else_feature = Else

+_UI_ConditionalUnit_inputPorts_feature = Input Ports

+_UI_ConditionalUnit_type_feature = Type

+_UI_QueuedUnit_strict_feature = Strict

+_UI_SingleQueuedUnit_helperUnits_feature = Helper Units

+_UI_SingleQueuedUnit_refactoringUnit_feature = Refactoring Unit

+_UI_SingleQueuedUnit_singleInputPorts_feature = Single Input Ports

+_UI_SingleQueuedUnit_multiInputPort_feature = Multi Input Port

+_UI_SingleQueuedUnit_type_feature = Type

+_UI_SingleQueuedUnit_lblStrict_feature = Lbl Strict

+_UI_CartesianQueuedUnit_helperUnits_feature = Helper Units

+_UI_CartesianQueuedUnit_refactoringUnit_feature = Refactoring Unit

+_UI_CartesianQueuedUnit_singleInputPorts_feature = Single Input Ports

+_UI_CartesianQueuedUnit_multiInputPorts_feature = Multi Input Ports

+_UI_CartesianQueuedUnit_type_feature = Type

+_UI_CartesianQueuedUnit_lblStrict_feature = Lbl Strict

+_UI_ParallelQueuedUnit_helperUnits_feature = Helper Units

+_UI_ParallelQueuedUnit_refactoringUnits_feature = Refactoring Units

+_UI_ParallelQueuedUnit_singleInputPorts_feature = Single Input Ports

+_UI_ParallelQueuedUnit_multiInputPorts_feature = Multi Input Ports

+_UI_ParallelQueuedUnit_type_feature = Type

+_UI_ParallelQueuedUnit_lblStrict_feature = Lbl Strict

+_UI_HelperUnit_helperUnitId_feature = Helper Unit Id

+_UI_HelperUnit_namespaceUri_feature = Namespace Uri

+_UI_SingleFeatureUnit_inputPort_feature = Input Port

+_UI_SingleFeatureUnit_secondaryInputPorts_feature = Secondary Input Ports

+_UI_SingleFeatureUnit_outputPort_feature = Output Port

+_UI_SingleFeatureUnit_singleFeatureHelper_feature = Single Feature Helper

+_UI_SingleFeatureUnit_type_feature = Type

+_UI_MultiFeatureUnit_inputPort_feature = Input Port

+_UI_MultiFeatureUnit_secondaryInputPorts_feature = Secondary Input Ports

+_UI_MultiFeatureUnit_outputPort_feature = Output Port

+_UI_MultiFeatureUnit_multiFeatureHelper_feature = Multi Feature Helper

+_UI_MultiFeatureUnit_type_feature = Type

+_UI_SingleFilterUnit_inputPort_feature = Input Port

+_UI_SingleFilterUnit_outputPort_feature = Output Port

+_UI_SingleFilterUnit_singleFilterHelper_feature = Single Filter Helper

+_UI_SingleFilterUnit_type_feature = Type

+_UI_MultiFilterUnit_inputPort_feature = Input Port

+_UI_MultiFilterUnit_outputPort_feature = Output Port

+_UI_MultiFilterUnit_multiFilterHelper_feature = Multi Filter Helper

+_UI_MultiFilterUnit_type_feature = Type

+_UI_Helper_helperId_feature = Helper Id

+_UI_Helper_namespaceUri_feature = Namespace Uri

+_UI_FeatureHelper_inputPort_feature = Input Port

+_UI_FeatureHelper_secondaryInputPorts_feature = Secondary Input Ports

+_UI_SingleFeatureHelper_outputPort_feature = Output Port

+_UI_MultiFeatureHelper_outputPort_feature = Output Port

+_UI_FilterHelper_inputPort_feature = Input Port

+_UI_SingleFilterHelper_outputPort_feature = Output Port

+_UI_MultiFilterHelper_outputPort_feature = Output Port

+_UI_Port_type_feature = Type

+_UI_SinglePort_value_feature = Value

+_UI_MultiPort_value_feature = Value

+_UI_SinglePortMapping_source_feature = Source

+_UI_SinglePortMapping_target_feature = Target

+_UI_MultiPortMapping_source_feature = Source

+_UI_MultiPortMapping_target_feature = Target

+_UI_MultiSinglePortMapping_source_feature = Source

+_UI_MultiSinglePortMapping_target_feature = Target

+_UI_Unknown_feature = Unspecified

+

+_UI_MappingVisualization_arrows_literal = arrows

+_UI_MappingVisualization_coloredPorts_literal = coloredPorts

+_UI_MappingVisualization_indices_literal = indices

+_UI_MappingVisualization_arrowsAndColoredPorts_literal = arrowsAndColoredPorts

+_UI_MappingVisualization_arrowsAndIndices_literal = arrowsAndIndices

diff --git a/org.eclipse.emf.refactor.comrel.edit/plugin.xml b/org.eclipse.emf.refactor.comrel.edit/plugin.xml
new file mode 100644
index 0000000..6813dc1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.0"?>

+

+<!--

+ <copyright>

+ </copyright>

+

+ $Id$

+-->

+

+<plugin>

+

+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">

+      <factory

+            uri="http://comrel/0.1"

+            class="comrel.provider.ComrelItemProviderAdapterFactory"

+            supportedTypes=

+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider

+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider

+               org.eclipse.emf.edit.provider.ITreeItemContentProvider

+               org.eclipse.emf.edit.provider.IItemLabelProvider

+               org.eclipse.emf.edit.provider.IItemPropertySource"/>

+   </extension>

+

+</plugin>

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/AtomicUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/AtomicUnitItemProvider.java
new file mode 100644
index 0000000..68f142d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/AtomicUnitItemProvider.java
@@ -0,0 +1,331 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.AtomicUnit;

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.AtomicUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class AtomicUnitItemProvider

+	extends RefactoringUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public AtomicUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addUnitIdPropertyDescriptor(object);

+			addLabelPropertyDescriptor(object);

+			addNamespaceUriPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+			addModelRefactoringPropertyDescriptor(object);

+			addCheckInitialConditionFlagPropertyDescriptor(object);

+			addCheckFinalConditionFlagPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Unit Id feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addUnitIdPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_unitId_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_unitId_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__UNIT_ID,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Label feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addLabelPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_label_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_label_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__LABEL,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Namespace Uri feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamespaceUriPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_namespaceUri_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_namespaceUri_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__NAMESPACE_URI,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_type_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Model Refactoring feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addModelRefactoringPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_modelRefactoring_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_modelRefactoring_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__MODEL_REFACTORING,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Check Initial Condition Flag feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addCheckInitialConditionFlagPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_checkInitialConditionFlag_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_checkInitialConditionFlag_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Check Final Condition Flag feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addCheckFinalConditionFlagPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_AtomicUnit_checkFinalConditionFlag_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_AtomicUnit_checkFinalConditionFlag_feature", "_UI_AtomicUnit_type"),

+				 ComrelPackage.Literals.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.ATOMIC_UNIT__INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns AtomicUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AtomicUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((AtomicUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_AtomicUnit_type") :

+			getString("_UI_AtomicUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(AtomicUnit.class)) {

+			case ComrelPackage.ATOMIC_UNIT__UNIT_ID:

+			case ComrelPackage.ATOMIC_UNIT__LABEL:

+			case ComrelPackage.ATOMIC_UNIT__NAMESPACE_URI:

+			case ComrelPackage.ATOMIC_UNIT__TYPE:

+			case ComrelPackage.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG:

+			case ComrelPackage.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.ATOMIC_UNIT__INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.ATOMIC_UNIT__INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CartesianQueuedUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CartesianQueuedUnitItemProvider.java
new file mode 100644
index 0000000..c77ef2e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CartesianQueuedUnitItemProvider.java
@@ -0,0 +1,273 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.CartesianQueuedUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class CartesianQueuedUnitItemProvider

+	extends TwicedQueuedUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public CartesianQueuedUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addTypePropertyDescriptor(object);

+			addLblStrictPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_CartesianQueuedUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_CartesianQueuedUnit_type_feature", "_UI_CartesianQueuedUnit_type"),

+				 ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Lbl Strict feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addLblStrictPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_CartesianQueuedUnit_lblStrict_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_CartesianQueuedUnit_lblStrict_feature", "_UI_CartesianQueuedUnit_type"),

+				 ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__LBL_STRICT,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__HELPER_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT);

+			childrenFeatures.add(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+			childrenFeatures.add(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns CartesianQueuedUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CartesianQueuedUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((CartesianQueuedUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_CartesianQueuedUnit_type") :

+			getString("_UI_CartesianQueuedUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(CartesianQueuedUnit.class)) {

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__TYPE:

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__LBL_STRICT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS:

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT:

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CompositeRefactoringItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CompositeRefactoringItemProvider.java
new file mode 100644
index 0000000..76d8cdc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CompositeRefactoringItemProvider.java
@@ -0,0 +1,312 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.CompositeRefactoring} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class CompositeRefactoringItemProvider

+	extends ModelRefactoringItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public CompositeRefactoringItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addMappingVisualizationPropertyDescriptor(object);

+			addCustomInitialConditionPropertyDescriptor(object);

+			addCustomFinalConditionPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Mapping Visualization feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addMappingVisualizationPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_CompositeRefactoring_mappingVisualization_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_CompositeRefactoring_mappingVisualization_feature", "_UI_CompositeRefactoring_type"),

+				 ComrelPackage.Literals.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Custom Initial Condition feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addCustomInitialConditionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_CompositeRefactoring_customInitialCondition_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_CompositeRefactoring_customInitialCondition_feature", "_UI_CompositeRefactoring_type"),

+				 ComrelPackage.Literals.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Custom Final Condition feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addCustomFinalConditionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_CompositeRefactoring_customFinalCondition_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_CompositeRefactoring_customFinalCondition_feature", "_UI_CompositeRefactoring_type"),

+				 ComrelPackage.Literals.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT);

+			childrenFeatures.add(ComrelPackage.Literals.COMPOSITE_REFACTORING__PORT_MAPPINGS);

+			childrenFeatures.add(ComrelPackage.Literals.COMPOSITE_REFACTORING__MODEL_REFACTORINGS);

+			childrenFeatures.add(ComrelPackage.Literals.COMPOSITE_REFACTORING__HELPER);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns CompositeRefactoring.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeRefactoring"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((CompositeRefactoring)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_CompositeRefactoring_type") :

+			getString("_UI_CompositeRefactoring_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(CompositeRefactoring.class)) {

+			case ComrelPackage.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION:

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION:

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT:

+			case ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS:

+			case ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS:

+			case ComrelPackage.COMPOSITE_REFACTORING__HELPER:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__PORT_MAPPINGS,

+				 ComrelFactory.eINSTANCE.createSinglePortMapping()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__PORT_MAPPINGS,

+				 ComrelFactory.eINSTANCE.createMultiPortMapping()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__PORT_MAPPINGS,

+				 ComrelFactory.eINSTANCE.createMultiSinglePortMapping()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MODEL_REFACTORINGS,

+				 ComrelFactory.eINSTANCE.createModelRefactoring()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__MODEL_REFACTORINGS,

+				 ComrelFactory.eINSTANCE.createCompositeRefactoring()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__HELPER,

+				 ComrelFactory.eINSTANCE.createSingleFeatureHelper()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__HELPER,

+				 ComrelFactory.eINSTANCE.createMultiFeatureHelper()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__HELPER,

+				 ComrelFactory.eINSTANCE.createSingleFilterHelper()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.COMPOSITE_REFACTORING__HELPER,

+				 ComrelFactory.eINSTANCE.createMultiFilterHelper()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CompositeUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CompositeUnitItemProvider.java
new file mode 100644
index 0000000..f5fb88a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/CompositeUnitItemProvider.java
@@ -0,0 +1,103 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.CompositeUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.CompositeUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class CompositeUnitItemProvider

+	extends RefactoringUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public CompositeUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((CompositeUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_CompositeUnit_type") :

+			getString("_UI_CompositeUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ComrelEditPlugin.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ComrelEditPlugin.java
new file mode 100644
index 0000000..dd3f65a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ComrelEditPlugin.java
@@ -0,0 +1,93 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+import org.eclipse.emf.common.EMFPlugin;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+/**

+ * This is the central singleton for the Comrel edit plugin.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public final class ComrelEditPlugin extends EMFPlugin {

+	/**

+	 * Keep track of the singleton.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final ComrelEditPlugin INSTANCE = new ComrelEditPlugin();

+

+	/**

+	 * Keep track of the singleton.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static Implementation plugin;

+

+	/**

+	 * Create the instance.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelEditPlugin() {

+		super

+		  (new ResourceLocator [] {

+		   });

+	}

+

+	/**

+	 * Returns the singleton instance of the Eclipse plugin.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the singleton instance.

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getPluginResourceLocator() {

+		return plugin;

+	}

+

+	/**

+	 * Returns the singleton instance of the Eclipse plugin.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the singleton instance.

+	 * @generated

+	 */

+	public static Implementation getPlugin() {

+		return plugin;

+	}

+

+	/**

+	 * The actual implementation of the Eclipse <b>Plugin</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static class Implementation extends EclipsePlugin {

+		/**

+		 * Creates an instance.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public Implementation() {

+			super();

+

+			// Remember the static instance.

+			//

+			plugin = this;

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ComrelItemProviderAdapterFactory.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ComrelItemProviderAdapterFactory.java
new file mode 100644
index 0000000..a252424
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ComrelItemProviderAdapterFactory.java
@@ -0,0 +1,755 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+import comrel.util.ComrelAdapterFactory;

+

+import java.util.ArrayList;

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Adapter;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.Notifier;

+

+import org.eclipse.emf.edit.provider.ChangeNotifier;

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

+import org.eclipse.emf.edit.provider.IChangeNotifier;

+import org.eclipse.emf.edit.provider.IDisposable;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.INotifyChangedListener;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the factory that is used to provide the interfaces needed to support Viewers.

+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.

+ * The adapters also support Eclipse property sheets.

+ * Note that most of the adapters are shared among multiple instances.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ComrelItemProviderAdapterFactory extends ComrelAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {

+	/**

+	 * This keeps track of the root adapter factory that delegates to this adapter factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ComposedAdapterFactory parentAdapterFactory;

+

+	/**

+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IChangeNotifier changeNotifier = new ChangeNotifier();

+

+	/**

+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<Object> supportedTypes = new ArrayList<Object>();

+

+	/**

+	 * This constructs an instance.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelItemProviderAdapterFactory() {

+		supportedTypes.add(IEditingDomainItemProvider.class);

+		supportedTypes.add(IStructuredItemContentProvider.class);

+		supportedTypes.add(ITreeItemContentProvider.class);

+		supportedTypes.add(IItemLabelProvider.class);

+		supportedTypes.add(IItemPropertySource.class);

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.CompositeRefactoring} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CompositeRefactoringItemProvider compositeRefactoringItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.CompositeRefactoring}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createCompositeRefactoringAdapter() {

+		if (compositeRefactoringItemProvider == null) {

+			compositeRefactoringItemProvider = new CompositeRefactoringItemProvider(this);

+		}

+

+		return compositeRefactoringItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.ModelRefactoring} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ModelRefactoringItemProvider modelRefactoringItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.ModelRefactoring}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createModelRefactoringAdapter() {

+		if (modelRefactoringItemProvider == null) {

+			modelRefactoringItemProvider = new ModelRefactoringItemProvider(this);

+		}

+

+		return modelRefactoringItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.AtomicUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected AtomicUnitItemProvider atomicUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.AtomicUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createAtomicUnitAdapter() {

+		if (atomicUnitItemProvider == null) {

+			atomicUnitItemProvider = new AtomicUnitItemProvider(this);

+		}

+

+		return atomicUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SequentialUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SequentialUnitItemProvider sequentialUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SequentialUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSequentialUnitAdapter() {

+		if (sequentialUnitItemProvider == null) {

+			sequentialUnitItemProvider = new SequentialUnitItemProvider(this);

+		}

+

+		return sequentialUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.ConditionCheck} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ConditionCheckItemProvider conditionCheckItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.ConditionCheck}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createConditionCheckAdapter() {

+		if (conditionCheckItemProvider == null) {

+			conditionCheckItemProvider = new ConditionCheckItemProvider(this);

+		}

+

+		return conditionCheckItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.ConditionalUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ConditionalUnitItemProvider conditionalUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.ConditionalUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createConditionalUnitAdapter() {

+		if (conditionalUnitItemProvider == null) {

+			conditionalUnitItemProvider = new ConditionalUnitItemProvider(this);

+		}

+

+		return conditionalUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleQueuedUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleQueuedUnitItemProvider singleQueuedUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleQueuedUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleQueuedUnitAdapter() {

+		if (singleQueuedUnitItemProvider == null) {

+			singleQueuedUnitItemProvider = new SingleQueuedUnitItemProvider(this);

+		}

+

+		return singleQueuedUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.CartesianQueuedUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CartesianQueuedUnitItemProvider cartesianQueuedUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.CartesianQueuedUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createCartesianQueuedUnitAdapter() {

+		if (cartesianQueuedUnitItemProvider == null) {

+			cartesianQueuedUnitItemProvider = new CartesianQueuedUnitItemProvider(this);

+		}

+

+		return cartesianQueuedUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.ParallelQueuedUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ParallelQueuedUnitItemProvider parallelQueuedUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.ParallelQueuedUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createParallelQueuedUnitAdapter() {

+		if (parallelQueuedUnitItemProvider == null) {

+			parallelQueuedUnitItemProvider = new ParallelQueuedUnitItemProvider(this);

+		}

+

+		return parallelQueuedUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleFeatureUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFeatureUnitItemProvider singleFeatureUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleFeatureUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleFeatureUnitAdapter() {

+		if (singleFeatureUnitItemProvider == null) {

+			singleFeatureUnitItemProvider = new SingleFeatureUnitItemProvider(this);

+		}

+

+		return singleFeatureUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiFeatureUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFeatureUnitItemProvider multiFeatureUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiFeatureUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiFeatureUnitAdapter() {

+		if (multiFeatureUnitItemProvider == null) {

+			multiFeatureUnitItemProvider = new MultiFeatureUnitItemProvider(this);

+		}

+

+		return multiFeatureUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleFilterUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFilterUnitItemProvider singleFilterUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleFilterUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleFilterUnitAdapter() {

+		if (singleFilterUnitItemProvider == null) {

+			singleFilterUnitItemProvider = new SingleFilterUnitItemProvider(this);

+		}

+

+		return singleFilterUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiFilterUnit} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFilterUnitItemProvider multiFilterUnitItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiFilterUnit}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiFilterUnitAdapter() {

+		if (multiFilterUnitItemProvider == null) {

+			multiFilterUnitItemProvider = new MultiFilterUnitItemProvider(this);

+		}

+

+		return multiFilterUnitItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleFeatureHelper} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFeatureHelperItemProvider singleFeatureHelperItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleFeatureHelper}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleFeatureHelperAdapter() {

+		if (singleFeatureHelperItemProvider == null) {

+			singleFeatureHelperItemProvider = new SingleFeatureHelperItemProvider(this);

+		}

+

+		return singleFeatureHelperItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiFeatureHelper} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFeatureHelperItemProvider multiFeatureHelperItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiFeatureHelper}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiFeatureHelperAdapter() {

+		if (multiFeatureHelperItemProvider == null) {

+			multiFeatureHelperItemProvider = new MultiFeatureHelperItemProvider(this);

+		}

+

+		return multiFeatureHelperItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleFilterHelper} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFilterHelperItemProvider singleFilterHelperItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleFilterHelper}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleFilterHelperAdapter() {

+		if (singleFilterHelperItemProvider == null) {

+			singleFilterHelperItemProvider = new SingleFilterHelperItemProvider(this);

+		}

+

+		return singleFilterHelperItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiFilterHelper} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFilterHelperItemProvider multiFilterHelperItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiFilterHelper}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiFilterHelperAdapter() {

+		if (multiFilterHelperItemProvider == null) {

+			multiFilterHelperItemProvider = new MultiFilterHelperItemProvider(this);

+		}

+

+		return multiFilterHelperItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleInputPort} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleInputPortItemProvider singleInputPortItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleInputPortAdapter() {

+		if (singleInputPortItemProvider == null) {

+			singleInputPortItemProvider = new SingleInputPortItemProvider(this);

+		}

+

+		return singleInputPortItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiInputPort} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiInputPortItemProvider multiInputPortItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiInputPortAdapter() {

+		if (multiInputPortItemProvider == null) {

+			multiInputPortItemProvider = new MultiInputPortItemProvider(this);

+		}

+

+		return multiInputPortItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SingleOutputPort} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleOutputPortItemProvider singleOutputPortItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SingleOutputPort}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSingleOutputPortAdapter() {

+		if (singleOutputPortItemProvider == null) {

+			singleOutputPortItemProvider = new SingleOutputPortItemProvider(this);

+		}

+

+		return singleOutputPortItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiOutputPort} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiOutputPortItemProvider multiOutputPortItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiOutputPort}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiOutputPortAdapter() {

+		if (multiOutputPortItemProvider == null) {

+			multiOutputPortItemProvider = new MultiOutputPortItemProvider(this);

+		}

+

+		return multiOutputPortItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.SinglePortMapping} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SinglePortMappingItemProvider singlePortMappingItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.SinglePortMapping}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createSinglePortMappingAdapter() {

+		if (singlePortMappingItemProvider == null) {

+			singlePortMappingItemProvider = new SinglePortMappingItemProvider(this);

+		}

+

+		return singlePortMappingItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiPortMapping} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiPortMappingItemProvider multiPortMappingItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiPortMapping}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiPortMappingAdapter() {

+		if (multiPortMappingItemProvider == null) {

+			multiPortMappingItemProvider = new MultiPortMappingItemProvider(this);

+		}

+

+		return multiPortMappingItemProvider;

+	}

+

+	/**

+	 * This keeps track of the one adapter used for all {@link comrel.MultiSinglePortMapping} instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiSinglePortMappingItemProvider multiSinglePortMappingItemProvider;

+

+	/**

+	 * This creates an adapter for a {@link comrel.MultiSinglePortMapping}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter createMultiSinglePortMappingAdapter() {

+		if (multiSinglePortMappingItemProvider == null) {

+			multiSinglePortMappingItemProvider = new MultiSinglePortMappingItemProvider(this);

+		}

+

+		return multiSinglePortMappingItemProvider;

+	}

+

+	/**

+	 * This returns the root adapter factory that contains this factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComposeableAdapterFactory getRootAdapterFactory() {

+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();

+	}

+

+	/**

+	 * This sets the composed adapter factory that contains this factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {

+		this.parentAdapterFactory = parentAdapterFactory;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean isFactoryForType(Object type) {

+		return supportedTypes.contains(type) || super.isFactoryForType(type);

+	}

+

+	/**

+	 * This implementation substitutes the factory itself as the key for the adapter.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Adapter adapt(Notifier notifier, Object type) {

+		return super.adapt(notifier, this);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object adapt(Object object, Object type) {

+		if (isFactoryForType(type)) {

+			Object adapter = super.adapt(object, type);

+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {

+				return adapter;

+			}

+		}

+

+		return null;

+	}

+

+	/**

+	 * This adds a listener.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void addListener(INotifyChangedListener notifyChangedListener) {

+		changeNotifier.addListener(notifyChangedListener);

+	}

+

+	/**

+	 * This removes a listener.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void removeListener(INotifyChangedListener notifyChangedListener) {

+		changeNotifier.removeListener(notifyChangedListener);

+	}

+

+	/**

+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void fireNotifyChanged(Notification notification) {

+		changeNotifier.fireNotifyChanged(notification);

+

+		if (parentAdapterFactory != null) {

+			parentAdapterFactory.fireNotifyChanged(notification);

+		}

+	}

+

+	/**

+	 * This disposes all of the item providers created by this factory. 

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void dispose() {

+		if (compositeRefactoringItemProvider != null) compositeRefactoringItemProvider.dispose();

+		if (modelRefactoringItemProvider != null) modelRefactoringItemProvider.dispose();

+		if (atomicUnitItemProvider != null) atomicUnitItemProvider.dispose();

+		if (sequentialUnitItemProvider != null) sequentialUnitItemProvider.dispose();

+		if (conditionCheckItemProvider != null) conditionCheckItemProvider.dispose();

+		if (conditionalUnitItemProvider != null) conditionalUnitItemProvider.dispose();

+		if (singleQueuedUnitItemProvider != null) singleQueuedUnitItemProvider.dispose();

+		if (cartesianQueuedUnitItemProvider != null) cartesianQueuedUnitItemProvider.dispose();

+		if (parallelQueuedUnitItemProvider != null) parallelQueuedUnitItemProvider.dispose();

+		if (singleFeatureUnitItemProvider != null) singleFeatureUnitItemProvider.dispose();

+		if (multiFeatureUnitItemProvider != null) multiFeatureUnitItemProvider.dispose();

+		if (singleFilterUnitItemProvider != null) singleFilterUnitItemProvider.dispose();

+		if (multiFilterUnitItemProvider != null) multiFilterUnitItemProvider.dispose();

+		if (singleFeatureHelperItemProvider != null) singleFeatureHelperItemProvider.dispose();

+		if (multiFeatureHelperItemProvider != null) multiFeatureHelperItemProvider.dispose();

+		if (singleFilterHelperItemProvider != null) singleFilterHelperItemProvider.dispose();

+		if (multiFilterHelperItemProvider != null) multiFilterHelperItemProvider.dispose();

+		if (singleInputPortItemProvider != null) singleInputPortItemProvider.dispose();

+		if (multiInputPortItemProvider != null) multiInputPortItemProvider.dispose();

+		if (singleOutputPortItemProvider != null) singleOutputPortItemProvider.dispose();

+		if (multiOutputPortItemProvider != null) multiOutputPortItemProvider.dispose();

+		if (singlePortMappingItemProvider != null) singlePortMappingItemProvider.dispose();

+		if (multiPortMappingItemProvider != null) multiPortMappingItemProvider.dispose();

+		if (multiSinglePortMappingItemProvider != null) multiSinglePortMappingItemProvider.dispose();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ConditionCheckItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ConditionCheckItemProvider.java
new file mode 100644
index 0000000..a41a5e2
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ConditionCheckItemProvider.java
@@ -0,0 +1,233 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.ConditionCheck;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.ConditionCheck} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ConditionCheckItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ConditionCheckItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addNamePropertyDescriptor(object);

+			addDescriptionPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+			addSpecPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Name feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_NamedElement_name_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),

+				 ComrelPackage.Literals.NAMED_ELEMENT__NAME,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Description feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addDescriptionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_DescribedElement_description_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_DescribedElement_description_feature", "_UI_DescribedElement_type"),

+				 ComrelPackage.Literals.DESCRIBED_ELEMENT__DESCRIPTION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ConditionCheck_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ConditionCheck_type_feature", "_UI_ConditionCheck_type"),

+				 ComrelPackage.Literals.CONDITION_CHECK__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Spec feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSpecPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ConditionCheck_spec_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ConditionCheck_spec_feature", "_UI_ConditionCheck_type"),

+				 ComrelPackage.Literals.CONDITION_CHECK__SPEC,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns ConditionCheck.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ConditionCheck"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((ConditionCheck)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_ConditionCheck_type") :

+			getString("_UI_ConditionCheck_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(ConditionCheck.class)) {

+			case ComrelPackage.CONDITION_CHECK__NAME:

+			case ComrelPackage.CONDITION_CHECK__DESCRIPTION:

+			case ComrelPackage.CONDITION_CHECK__TYPE:

+			case ComrelPackage.CONDITION_CHECK__SPEC:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ConditionalUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ConditionalUnitItemProvider.java
new file mode 100644
index 0000000..2dd0ce0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ConditionalUnitItemProvider.java
@@ -0,0 +1,309 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.ConditionalUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.ConditionalUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ConditionalUnitItemProvider

+	extends CompositeUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ConditionalUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addTypePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ConditionalUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ConditionalUnit_type_feature", "_UI_ConditionalUnit_type"),

+				 ComrelPackage.Literals.CONDITIONAL_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.CONDITIONAL_UNIT__IF);

+			childrenFeatures.add(ComrelPackage.Literals.CONDITIONAL_UNIT__HELPER_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN);

+			childrenFeatures.add(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE);

+			childrenFeatures.add(ComrelPackage.Literals.CONDITIONAL_UNIT__INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns ConditionalUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ConditionalUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((ConditionalUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_ConditionalUnit_type") :

+			getString("_UI_ConditionalUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(ConditionalUnit.class)) {

+			case ComrelPackage.CONDITIONAL_UNIT__TYPE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__IF:

+			case ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS:

+			case ComrelPackage.CONDITIONAL_UNIT__THEN:

+			case ComrelPackage.CONDITIONAL_UNIT__ELSE:

+			case ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__IF,

+				 ComrelFactory.eINSTANCE.createConditionCheck()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__THEN,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.CONDITIONAL_UNIT__INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+	/**

+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {

+		Object childFeature = feature;

+		Object childObject = child;

+

+		boolean qualify =

+			childFeature == ComrelPackage.Literals.CONDITIONAL_UNIT__THEN ||

+			childFeature == ComrelPackage.Literals.CONDITIONAL_UNIT__ELSE;

+

+		if (qualify) {

+			return getString

+				("_UI_CreateChild_text2",

+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });

+		}

+		return super.getCreateChildText(owner, feature, child, selection);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FeatureHelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FeatureHelperItemProvider.java
new file mode 100644
index 0000000..e28ae52
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FeatureHelperItemProvider.java
@@ -0,0 +1,156 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.FeatureHelper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.FeatureHelper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class FeatureHelperItemProvider

+	extends HelperItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public FeatureHelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.FEATURE_HELPER__INPUT_PORT);

+			childrenFeatures.add(ComrelPackage.Literals.FEATURE_HELPER__SECONDARY_INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((FeatureHelper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_FeatureHelper_type") :

+			getString("_UI_FeatureHelper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(FeatureHelper.class)) {

+			case ComrelPackage.FEATURE_HELPER__INPUT_PORT:

+			case ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.FEATURE_HELPER__INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.FEATURE_HELPER__SECONDARY_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FeatureUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FeatureUnitItemProvider.java
new file mode 100644
index 0000000..e609d8e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FeatureUnitItemProvider.java
@@ -0,0 +1,103 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.FeatureUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.FeatureUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class FeatureUnitItemProvider

+	extends HelperUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public FeatureUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((FeatureUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_FeatureUnit_type") :

+			getString("_UI_FeatureUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FilterHelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FilterHelperItemProvider.java
new file mode 100644
index 0000000..46d0ab9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FilterHelperItemProvider.java
@@ -0,0 +1,149 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.FilterHelper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.FilterHelper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class FilterHelperItemProvider

+	extends HelperItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public FilterHelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.FILTER_HELPER__INPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((FilterHelper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_FilterHelper_type") :

+			getString("_UI_FilterHelper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(FilterHelper.class)) {

+			case ComrelPackage.FILTER_HELPER__INPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.FILTER_HELPER__INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FilterUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FilterUnitItemProvider.java
new file mode 100644
index 0000000..9d217ae
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/FilterUnitItemProvider.java
@@ -0,0 +1,103 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.FilterUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.FilterUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class FilterUnitItemProvider

+	extends HelperUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public FilterUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((FilterUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_FilterUnit_type") :

+			getString("_UI_FilterUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/HelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/HelperItemProvider.java
new file mode 100644
index 0000000..26a3106
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/HelperItemProvider.java
@@ -0,0 +1,222 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.Helper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.Helper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class HelperItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public HelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addNamePropertyDescriptor(object);

+			addDescriptionPropertyDescriptor(object);

+			addHelperIdPropertyDescriptor(object);

+			addNamespaceUriPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Name feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_NamedElement_name_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),

+				 ComrelPackage.Literals.NAMED_ELEMENT__NAME,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Description feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addDescriptionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_DescribedElement_description_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_DescribedElement_description_feature", "_UI_DescribedElement_type"),

+				 ComrelPackage.Literals.DESCRIBED_ELEMENT__DESCRIPTION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Helper Id feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addHelperIdPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_Helper_helperId_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_Helper_helperId_feature", "_UI_Helper_type"),

+				 ComrelPackage.Literals.HELPER__HELPER_ID,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Namespace Uri feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamespaceUriPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_Helper_namespaceUri_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_Helper_namespaceUri_feature", "_UI_Helper_type"),

+				 ComrelPackage.Literals.HELPER__NAMESPACE_URI,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((Helper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_Helper_type") :

+			getString("_UI_Helper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(Helper.class)) {

+			case ComrelPackage.HELPER__NAME:

+			case ComrelPackage.HELPER__DESCRIPTION:

+			case ComrelPackage.HELPER__HELPER_ID:

+			case ComrelPackage.HELPER__NAMESPACE_URI:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/HelperUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/HelperUnitItemProvider.java
new file mode 100644
index 0000000..0b7addb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/HelperUnitItemProvider.java
@@ -0,0 +1,222 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.HelperUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.HelperUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class HelperUnitItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public HelperUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addNamePropertyDescriptor(object);

+			addDescriptionPropertyDescriptor(object);

+			addHelperUnitIdPropertyDescriptor(object);

+			addNamespaceUriPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Name feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_NamedElement_name_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),

+				 ComrelPackage.Literals.NAMED_ELEMENT__NAME,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Description feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addDescriptionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_DescribedElement_description_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_DescribedElement_description_feature", "_UI_DescribedElement_type"),

+				 ComrelPackage.Literals.DESCRIBED_ELEMENT__DESCRIPTION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Helper Unit Id feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addHelperUnitIdPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_HelperUnit_helperUnitId_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_HelperUnit_helperUnitId_feature", "_UI_HelperUnit_type"),

+				 ComrelPackage.Literals.HELPER_UNIT__HELPER_UNIT_ID,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Namespace Uri feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamespaceUriPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_HelperUnit_namespaceUri_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_HelperUnit_namespaceUri_feature", "_UI_HelperUnit_type"),

+				 ComrelPackage.Literals.HELPER_UNIT__NAMESPACE_URI,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((HelperUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_HelperUnit_type") :

+			getString("_UI_HelperUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(HelperUnit.class)) {

+			case ComrelPackage.HELPER_UNIT__NAME:

+			case ComrelPackage.HELPER_UNIT__DESCRIPTION:

+			case ComrelPackage.HELPER_UNIT__HELPER_UNIT_ID:

+			case ComrelPackage.HELPER_UNIT__NAMESPACE_URI:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/InputPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/InputPortItemProvider.java
new file mode 100644
index 0000000..37e0fd4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/InputPortItemProvider.java
@@ -0,0 +1,103 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.InputPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.InputPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class InputPortItemProvider

+	extends PortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public InputPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((InputPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_InputPort_type") :

+			getString("_UI_InputPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ModelRefactoringItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ModelRefactoringItemProvider.java
new file mode 100644
index 0000000..28e48df
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ModelRefactoringItemProvider.java
@@ -0,0 +1,298 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.ModelRefactoring;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.ModelRefactoring} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ModelRefactoringItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ModelRefactoringItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addNamePropertyDescriptor(object);

+			addDescriptionPropertyDescriptor(object);

+			addRefIdPropertyDescriptor(object);

+			addLabelPropertyDescriptor(object);

+			addNamespaceUriPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Name feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_NamedElement_name_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),

+				 ComrelPackage.Literals.NAMED_ELEMENT__NAME,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Description feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addDescriptionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_DescribedElement_description_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_DescribedElement_description_feature", "_UI_DescribedElement_type"),

+				 ComrelPackage.Literals.DESCRIBED_ELEMENT__DESCRIPTION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Ref Id feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addRefIdPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ModelRefactoring_refId_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ModelRefactoring_refId_feature", "_UI_ModelRefactoring_type"),

+				 ComrelPackage.Literals.MODEL_REFACTORING__REF_ID,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Label feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addLabelPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ModelRefactoring_label_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ModelRefactoring_label_feature", "_UI_ModelRefactoring_type"),

+				 ComrelPackage.Literals.MODEL_REFACTORING__LABEL,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Namespace Uri feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamespaceUriPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ModelRefactoring_namespaceUri_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ModelRefactoring_namespaceUri_feature", "_UI_ModelRefactoring_type"),

+				 ComrelPackage.Literals.MODEL_REFACTORING__NAMESPACE_URI,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.MODEL_REFACTORING__INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns ModelRefactoring.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelRefactoring"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((ModelRefactoring)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_ModelRefactoring_type") :

+			getString("_UI_ModelRefactoring_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(ModelRefactoring.class)) {

+			case ComrelPackage.MODEL_REFACTORING__NAME:

+			case ComrelPackage.MODEL_REFACTORING__DESCRIPTION:

+			case ComrelPackage.MODEL_REFACTORING__REF_ID:

+			case ComrelPackage.MODEL_REFACTORING__LABEL:

+			case ComrelPackage.MODEL_REFACTORING__NAMESPACE_URI:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.MODEL_REFACTORING__INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MODEL_REFACTORING__INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFeatureHelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFeatureHelperItemProvider.java
new file mode 100644
index 0000000..a65c98c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFeatureHelperItemProvider.java
@@ -0,0 +1,160 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiFeatureHelper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiFeatureHelper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiFeatureHelperItemProvider

+	extends FeatureHelperItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFeatureHelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FEATURE_HELPER__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns MultiFeatureHelper.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiFeatureHelper"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiFeatureHelper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiFeatureHelper_type") :

+			getString("_UI_MultiFeatureHelper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(MultiFeatureHelper.class)) {

+			case ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FEATURE_HELPER__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFeatureUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFeatureUnitItemProvider.java
new file mode 100644
index 0000000..4ab0cc4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFeatureUnitItemProvider.java
@@ -0,0 +1,225 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiFeatureUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiFeatureUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiFeatureUnitItemProvider

+	extends FeatureUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFeatureUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addMultiFeatureHelperPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Multi Feature Helper feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addMultiFeatureHelperPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiFeatureUnit_multiFeatureHelper_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiFeatureUnit_multiFeatureHelper_feature", "_UI_MultiFeatureUnit_type"),

+				 ComrelPackage.Literals.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiFeatureUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiFeatureUnit_type_feature", "_UI_MultiFeatureUnit_type"),

+				 ComrelPackage.Literals.MULTI_FEATURE_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FEATURE_UNIT__INPUT_PORT);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FEATURE_UNIT__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns MultiFeatureUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiFeatureUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiFeatureUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiFeatureUnit_type") :

+			getString("_UI_MultiFeatureUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(MultiFeatureUnit.class)) {

+			case ComrelPackage.MULTI_FEATURE_UNIT__TYPE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT:

+			case ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+			case ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FEATURE_UNIT__INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FEATURE_UNIT__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFilterHelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFilterHelperItemProvider.java
new file mode 100644
index 0000000..12d52fa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFilterHelperItemProvider.java
@@ -0,0 +1,160 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiFilterHelper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiFilterHelper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiFilterHelperItemProvider

+	extends FilterHelperItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFilterHelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FILTER_HELPER__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns MultiFilterHelper.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiFilterHelper"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiFilterHelper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiFilterHelper_type") :

+			getString("_UI_MultiFilterHelper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(MultiFilterHelper.class)) {

+			case ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FILTER_HELPER__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFilterUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFilterUnitItemProvider.java
new file mode 100644
index 0000000..1f0dd2b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiFilterUnitItemProvider.java
@@ -0,0 +1,218 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiFilterUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiFilterUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiFilterUnitItemProvider

+	extends FilterUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFilterUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addMultiFilterHelperPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Multi Filter Helper feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addMultiFilterHelperPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiFilterUnit_multiFilterHelper_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiFilterUnit_multiFilterHelper_feature", "_UI_MultiFilterUnit_type"),

+				 ComrelPackage.Literals.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiFilterUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiFilterUnit_type_feature", "_UI_MultiFilterUnit_type"),

+				 ComrelPackage.Literals.MULTI_FILTER_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FILTER_UNIT__INPUT_PORT);

+			childrenFeatures.add(ComrelPackage.Literals.MULTI_FILTER_UNIT__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns MultiFilterUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiFilterUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiFilterUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiFilterUnit_type") :

+			getString("_UI_MultiFilterUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(MultiFilterUnit.class)) {

+			case ComrelPackage.MULTI_FILTER_UNIT__TYPE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT:

+			case ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FILTER_UNIT__INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.MULTI_FILTER_UNIT__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiInputPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiInputPortItemProvider.java
new file mode 100644
index 0000000..182a702
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiInputPortItemProvider.java
@@ -0,0 +1,114 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.MultiInputPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiInputPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiInputPortItemProvider

+	extends MultiPortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns MultiInputPort.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiInputPort"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiInputPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiInputPort_type") :

+			getString("_UI_MultiInputPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiOutputPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiOutputPortItemProvider.java
new file mode 100644
index 0000000..37b9b2a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiOutputPortItemProvider.java
@@ -0,0 +1,114 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.MultiOutputPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiOutputPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiOutputPortItemProvider

+	extends MultiPortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiOutputPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns MultiOutputPort.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiOutputPort"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiOutputPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiOutputPort_type") :

+			getString("_UI_MultiOutputPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiPortItemProvider.java
new file mode 100644
index 0000000..bda0198
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiPortItemProvider.java
@@ -0,0 +1,136 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.MultiPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiPortItemProvider

+	extends PortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addValuePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Value feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addValuePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiPort_value_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiPort_value_feature", "_UI_MultiPort_type"),

+				 ComrelPackage.Literals.MULTI_PORT__VALUE,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((MultiPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_MultiPort_type") :

+			getString("_UI_MultiPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(MultiPort.class)) {

+			case ComrelPackage.MULTI_PORT__VALUE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiPortMappingItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiPortMappingItemProvider.java
new file mode 100644
index 0000000..81ee071
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiPortMappingItemProvider.java
@@ -0,0 +1,158 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiPortMapping} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiPortMappingItemProvider

+	extends PortMappingItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPortMappingItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addSourcePropertyDescriptor(object);

+			addTargetPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Source feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSourcePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiPortMapping_source_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiPortMapping_source_feature", "_UI_MultiPortMapping_type"),

+				 ComrelPackage.Literals.MULTI_PORT_MAPPING__SOURCE,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Target feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTargetPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiPortMapping_target_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiPortMapping_target_feature", "_UI_MultiPortMapping_type"),

+				 ComrelPackage.Literals.MULTI_PORT_MAPPING__TARGET,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns MultiPortMapping.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiPortMapping"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		return getString("_UI_MultiPortMapping_type");

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiSinglePortMappingItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiSinglePortMappingItemProvider.java
new file mode 100644
index 0000000..6753f07
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/MultiSinglePortMappingItemProvider.java
@@ -0,0 +1,158 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.MultiSinglePortMapping} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class MultiSinglePortMappingItemProvider

+	extends PortMappingItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiSinglePortMappingItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addSourcePropertyDescriptor(object);

+			addTargetPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Source feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSourcePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiSinglePortMapping_source_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiSinglePortMapping_source_feature", "_UI_MultiSinglePortMapping_type"),

+				 ComrelPackage.Literals.MULTI_SINGLE_PORT_MAPPING__SOURCE,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Target feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTargetPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_MultiSinglePortMapping_target_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_MultiSinglePortMapping_target_feature", "_UI_MultiSinglePortMapping_type"),

+				 ComrelPackage.Literals.MULTI_SINGLE_PORT_MAPPING__TARGET,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns MultiSinglePortMapping.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/MultiSinglePortMapping"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		return getString("_UI_MultiSinglePortMapping_type");

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/OutputPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/OutputPortItemProvider.java
new file mode 100644
index 0000000..b44cce9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/OutputPortItemProvider.java
@@ -0,0 +1,103 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.OutputPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.OutputPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class OutputPortItemProvider

+	extends PortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public OutputPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((OutputPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_OutputPort_type") :

+			getString("_UI_OutputPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ParallelQueuedUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ParallelQueuedUnitItemProvider.java
new file mode 100644
index 0000000..eb08eee
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/ParallelQueuedUnitItemProvider.java
@@ -0,0 +1,273 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.ParallelQueuedUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.ParallelQueuedUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ParallelQueuedUnitItemProvider

+	extends TwicedQueuedUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ParallelQueuedUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addTypePropertyDescriptor(object);

+			addLblStrictPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ParallelQueuedUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ParallelQueuedUnit_type_feature", "_UI_ParallelQueuedUnit_type"),

+				 ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Lbl Strict feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addLblStrictPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_ParallelQueuedUnit_lblStrict_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_ParallelQueuedUnit_lblStrict_feature", "_UI_ParallelQueuedUnit_type"),

+				 ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__LBL_STRICT,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__HELPER_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+			childrenFeatures.add(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns ParallelQueuedUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ParallelQueuedUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((ParallelQueuedUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_ParallelQueuedUnit_type") :

+			getString("_UI_ParallelQueuedUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(ParallelQueuedUnit.class)) {

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__TYPE:

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__LBL_STRICT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS:

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS:

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/PortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/PortItemProvider.java
new file mode 100644
index 0000000..6ca9d08
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/PortItemProvider.java
@@ -0,0 +1,198 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.Port;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.Port} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class PortItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public PortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addNamePropertyDescriptor(object);

+			addDescriptionPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Name feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_NamedElement_name_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),

+				 ComrelPackage.Literals.NAMED_ELEMENT__NAME,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Description feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addDescriptionPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_DescribedElement_description_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_DescribedElement_description_feature", "_UI_DescribedElement_type"),

+				 ComrelPackage.Literals.DESCRIBED_ELEMENT__DESCRIPTION,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_Port_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_Port_type_feature", "_UI_Port_type"),

+				 ComrelPackage.Literals.PORT__TYPE,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((Port)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_Port_type") :

+			getString("_UI_Port_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(Port.class)) {

+			case ComrelPackage.PORT__NAME:

+			case ComrelPackage.PORT__DESCRIPTION:

+			case ComrelPackage.PORT__TYPE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/PortMappingItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/PortMappingItemProvider.java
new file mode 100644
index 0000000..eac92ed
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/PortMappingItemProvider.java
@@ -0,0 +1,112 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+

+/**

+ * This is the item provider adapter for a {@link comrel.PortMapping} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class PortMappingItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public PortMappingItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		return getString("_UI_PortMapping_type");

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/QueuedUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/QueuedUnitItemProvider.java
new file mode 100644
index 0000000..fb9d1c5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/QueuedUnitItemProvider.java
@@ -0,0 +1,136 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.QueuedUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.QueuedUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class QueuedUnitItemProvider

+	extends CompositeUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public QueuedUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addStrictPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Strict feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addStrictPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_QueuedUnit_strict_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_QueuedUnit_strict_feature", "_UI_QueuedUnit_type"),

+				 ComrelPackage.Literals.QUEUED_UNIT__STRICT,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((QueuedUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_QueuedUnit_type") :

+			getString("_UI_QueuedUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(QueuedUnit.class)) {

+			case ComrelPackage.QUEUED_UNIT__STRICT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/RefactoringUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/RefactoringUnitItemProvider.java
new file mode 100644
index 0000000..64d929b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/RefactoringUnitItemProvider.java
@@ -0,0 +1,174 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.RefactoringUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ItemProviderAdapter;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.RefactoringUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class RefactoringUnitItemProvider

+	extends ItemProviderAdapter

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addNamePropertyDescriptor(object);

+			addSeqExecutionOrderPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Name feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addNamePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_NamedElement_name_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),

+				 ComrelPackage.Literals.NAMED_ELEMENT__NAME,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Seq Execution Order feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSeqExecutionOrderPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_RefactoringUnit_seqExecutionOrder_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_RefactoringUnit_seqExecutionOrder_feature", "_UI_RefactoringUnit_type"),

+				 ComrelPackage.Literals.REFACTORING_UNIT__SEQ_EXECUTION_ORDER,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((RefactoringUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_RefactoringUnit_type") :

+			getString("_UI_RefactoringUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(RefactoringUnit.class)) {

+			case ComrelPackage.REFACTORING_UNIT__NAME:

+			case ComrelPackage.REFACTORING_UNIT__SEQ_EXECUTION_ORDER:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+	/**

+	 * Return the resource locator for this item provider's resources.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getResourceLocator() {

+		return ComrelEditPlugin.INSTANCE;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SequentialUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SequentialUnitItemProvider.java
new file mode 100644
index 0000000..eb805da
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SequentialUnitItemProvider.java
@@ -0,0 +1,295 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.SequentialUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SequentialUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SequentialUnitItemProvider

+	extends CompositeUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SequentialUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addStrictPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+			addLblStrictPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Strict feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addStrictPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SequentialUnit_strict_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SequentialUnit_strict_feature", "_UI_SequentialUnit_type"),

+				 ComrelPackage.Literals.SEQUENTIAL_UNIT__STRICT,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SequentialUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SequentialUnit_type_feature", "_UI_SequentialUnit_type"),

+				 ComrelPackage.Literals.SEQUENTIAL_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Lbl Strict feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addLblStrictPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SequentialUnit_lblStrict_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SequentialUnit_lblStrict_feature", "_UI_SequentialUnit_type"),

+				 ComrelPackage.Literals.SEQUENTIAL_UNIT__LBL_STRICT,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.SEQUENTIAL_UNIT__HELPER_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.SEQUENTIAL_UNIT__INPUT_PORTS);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns SequentialUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SequentialUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SequentialUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SequentialUnit_type") :

+			getString("_UI_SequentialUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SequentialUnit.class)) {

+			case ComrelPackage.SEQUENTIAL_UNIT__STRICT:

+			case ComrelPackage.SEQUENTIAL_UNIT__TYPE:

+			case ComrelPackage.SEQUENTIAL_UNIT__LBL_STRICT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS:

+			case ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS:

+			case ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__REFACTORING_UNITS,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SEQUENTIAL_UNIT__INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFeatureHelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFeatureHelperItemProvider.java
new file mode 100644
index 0000000..9f76477
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFeatureHelperItemProvider.java
@@ -0,0 +1,160 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.SingleFeatureHelper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleFeatureHelper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleFeatureHelperItemProvider

+	extends FeatureHelperItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFeatureHelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FEATURE_HELPER__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns SingleFeatureHelper.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleFeatureHelper"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleFeatureHelper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleFeatureHelper_type") :

+			getString("_UI_SingleFeatureHelper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SingleFeatureHelper.class)) {

+			case ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FEATURE_HELPER__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFeatureUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFeatureUnitItemProvider.java
new file mode 100644
index 0000000..01fd17c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFeatureUnitItemProvider.java
@@ -0,0 +1,225 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.SingleFeatureUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleFeatureUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleFeatureUnitItemProvider

+	extends FeatureUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFeatureUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addSingleFeatureHelperPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Single Feature Helper feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSingleFeatureHelperPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SingleFeatureUnit_singleFeatureHelper_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SingleFeatureUnit_singleFeatureHelper_feature", "_UI_SingleFeatureUnit_type"),

+				 ComrelPackage.Literals.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SingleFeatureUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SingleFeatureUnit_type_feature", "_UI_SingleFeatureUnit_type"),

+				 ComrelPackage.Literals.SINGLE_FEATURE_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FEATURE_UNIT__INPUT_PORT);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FEATURE_UNIT__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns SingleFeatureUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleFeatureUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleFeatureUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleFeatureUnit_type") :

+			getString("_UI_SingleFeatureUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SingleFeatureUnit.class)) {

+			case ComrelPackage.SINGLE_FEATURE_UNIT__TYPE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT:

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+			case ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FEATURE_UNIT__INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FEATURE_UNIT__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFilterHelperItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFilterHelperItemProvider.java
new file mode 100644
index 0000000..99d3808
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFilterHelperItemProvider.java
@@ -0,0 +1,160 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.SingleFilterHelper;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleFilterHelper} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleFilterHelperItemProvider

+	extends FilterHelperItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFilterHelperItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FILTER_HELPER__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns SingleFilterHelper.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleFilterHelper"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleFilterHelper)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleFilterHelper_type") :

+			getString("_UI_SingleFilterHelper_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SingleFilterHelper.class)) {

+			case ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FILTER_HELPER__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFilterUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFilterUnitItemProvider.java
new file mode 100644
index 0000000..220d083
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleFilterUnitItemProvider.java
@@ -0,0 +1,218 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.SingleFilterUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleFilterUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleFilterUnitItemProvider

+	extends FilterUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFilterUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addSingleFilterHelperPropertyDescriptor(object);

+			addTypePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Single Filter Helper feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSingleFilterHelperPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SingleFilterUnit_singleFilterHelper_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SingleFilterUnit_singleFilterHelper_feature", "_UI_SingleFilterUnit_type"),

+				 ComrelPackage.Literals.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SingleFilterUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SingleFilterUnit_type_feature", "_UI_SingleFilterUnit_type"),

+				 ComrelPackage.Literals.SINGLE_FILTER_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FILTER_UNIT__INPUT_PORT);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_FILTER_UNIT__OUTPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns SingleFilterUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleFilterUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleFilterUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleFilterUnit_type") :

+			getString("_UI_SingleFilterUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SingleFilterUnit.class)) {

+			case ComrelPackage.SINGLE_FILTER_UNIT__TYPE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT:

+			case ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FILTER_UNIT__INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_FILTER_UNIT__OUTPUT_PORT,

+				 ComrelFactory.eINSTANCE.createSingleOutputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleInputPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleInputPortItemProvider.java
new file mode 100644
index 0000000..7ef06b4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleInputPortItemProvider.java
@@ -0,0 +1,114 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.SingleInputPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleInputPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleInputPortItemProvider

+	extends SinglePortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns SingleInputPort.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleInputPort"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleInputPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleInputPort_type") :

+			getString("_UI_SingleInputPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleOutputPortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleOutputPortItemProvider.java
new file mode 100644
index 0000000..c33803b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleOutputPortItemProvider.java
@@ -0,0 +1,114 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.SingleOutputPort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleOutputPort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleOutputPortItemProvider

+	extends SinglePortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleOutputPortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns SingleOutputPort.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleOutputPort"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleOutputPort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleOutputPort_type") :

+			getString("_UI_SingleOutputPort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SinglePortItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SinglePortItemProvider.java
new file mode 100644
index 0000000..4ae3182
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SinglePortItemProvider.java
@@ -0,0 +1,136 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+import comrel.SinglePort;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SinglePort} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SinglePortItemProvider

+	extends PortItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SinglePortItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addValuePropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Value feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addValuePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SinglePort_value_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SinglePort_value_feature", "_UI_SinglePort_type"),

+				 ComrelPackage.Literals.SINGLE_PORT__VALUE,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SinglePort)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SinglePort_type") :

+			getString("_UI_SinglePort_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SinglePort.class)) {

+			case ComrelPackage.SINGLE_PORT__VALUE:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SinglePortMappingItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SinglePortMappingItemProvider.java
new file mode 100644
index 0000000..58a7136
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SinglePortMappingItemProvider.java
@@ -0,0 +1,158 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelPackage;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SinglePortMapping} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SinglePortMappingItemProvider

+	extends PortMappingItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SinglePortMappingItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addSourcePropertyDescriptor(object);

+			addTargetPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Source feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addSourcePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SinglePortMapping_source_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SinglePortMapping_source_feature", "_UI_SinglePortMapping_type"),

+				 ComrelPackage.Literals.SINGLE_PORT_MAPPING__SOURCE,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Target feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTargetPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SinglePortMapping_target_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SinglePortMapping_target_feature", "_UI_SinglePortMapping_type"),

+				 ComrelPackage.Literals.SINGLE_PORT_MAPPING__TARGET,

+				 true,

+				 false,

+				 true,

+				 null,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This returns SinglePortMapping.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SinglePortMapping"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		return getString("_UI_SinglePortMapping_type");

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleQueuedUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleQueuedUnitItemProvider.java
new file mode 100644
index 0000000..beae9d7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/SingleQueuedUnitItemProvider.java
@@ -0,0 +1,273 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.SingleQueuedUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EStructuralFeature;

+

+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.ViewerNotification;

+

+/**

+ * This is the item provider adapter for a {@link comrel.SingleQueuedUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class SingleQueuedUnitItemProvider

+	extends QueuedUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleQueuedUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+			addTypePropertyDescriptor(object);

+			addLblStrictPropertyDescriptor(object);

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This adds a property descriptor for the Type feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addTypePropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SingleQueuedUnit_type_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SingleQueuedUnit_type_feature", "_UI_SingleQueuedUnit_type"),

+				 ComrelPackage.Literals.SINGLE_QUEUED_UNIT__TYPE,

+				 false,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This adds a property descriptor for the Lbl Strict feature.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void addLblStrictPropertyDescriptor(Object object) {

+		itemPropertyDescriptors.add

+			(createItemPropertyDescriptor

+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),

+				 getResourceLocator(),

+				 getString("_UI_SingleQueuedUnit_lblStrict_feature"),

+				 getString("_UI_PropertyDescriptor_description", "_UI_SingleQueuedUnit_lblStrict_feature", "_UI_SingleQueuedUnit_type"),

+				 ComrelPackage.Literals.SINGLE_QUEUED_UNIT__LBL_STRICT,

+				 true,

+				 false,

+				 false,

+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,

+				 null,

+				 null));

+	}

+

+	/**

+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an

+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or

+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {

+		if (childrenFeatures == null) {

+			super.getChildrenFeatures(object);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__HELPER_UNITS);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+			childrenFeatures.add(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT);

+		}

+		return childrenFeatures;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EStructuralFeature getChildFeature(Object object, Object child) {

+		// Check the type of the specified child object and return the proper feature to use for

+		// adding (see {@link AddCommand}) it as a child.

+

+		return super.getChildFeature(object, child);

+	}

+

+	/**

+	 * This returns SingleQueuedUnit.gif.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object getImage(Object object) {

+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SingleQueuedUnit"));

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((SingleQueuedUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_SingleQueuedUnit_type") :

+			getString("_UI_SingleQueuedUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+

+		switch (notification.getFeatureID(SingleQueuedUnit.class)) {

+			case ComrelPackage.SINGLE_QUEUED_UNIT__TYPE:

+			case ComrelPackage.SINGLE_QUEUED_UNIT__LBL_STRICT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS:

+			case ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT:

+			case ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+			case ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT:

+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));

+				return;

+		}

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFeatureUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createSingleFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__HELPER_UNITS,

+				 ComrelFactory.eINSTANCE.createMultiFilterUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createAtomicUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createSequentialUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createConditionalUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createSingleQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createCartesianQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__REFACTORING_UNIT,

+				 ComrelFactory.eINSTANCE.createParallelQueuedUnit()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS,

+				 ComrelFactory.eINSTANCE.createSingleInputPort()));

+

+		newChildDescriptors.add

+			(createChildParameter

+				(ComrelPackage.Literals.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT,

+				 ComrelFactory.eINSTANCE.createMultiInputPort()));

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/TwicedQueuedUnitItemProvider.java b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/TwicedQueuedUnitItemProvider.java
new file mode 100644
index 0000000..2b7c84e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.edit/src/comrel/provider/TwicedQueuedUnitItemProvider.java
@@ -0,0 +1,103 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.provider;

+

+

+import comrel.TwicedQueuedUnit;

+

+import java.util.Collection;

+import java.util.List;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;

+import org.eclipse.emf.edit.provider.IItemLabelProvider;

+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+import org.eclipse.emf.edit.provider.IItemPropertySource;

+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;

+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

+

+/**

+ * This is the item provider adapter for a {@link comrel.TwicedQueuedUnit} object.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class TwicedQueuedUnitItemProvider

+	extends QueuedUnitItemProvider

+	implements

+		IEditingDomainItemProvider,

+		IStructuredItemContentProvider,

+		ITreeItemContentProvider,

+		IItemLabelProvider,

+		IItemPropertySource {

+	/**

+	 * This constructs an instance from a factory and a notifier.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public TwicedQueuedUnitItemProvider(AdapterFactory adapterFactory) {

+		super(adapterFactory);

+	}

+

+	/**

+	 * This returns the property descriptors for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {

+		if (itemPropertyDescriptors == null) {

+			super.getPropertyDescriptors(object);

+

+		}

+		return itemPropertyDescriptors;

+	}

+

+	/**

+	 * This returns the label text for the adapted class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String getText(Object object) {

+		String label = ((TwicedQueuedUnit)object).getName();

+		return label == null || label.length() == 0 ?

+			getString("_UI_TwicedQueuedUnit_type") :

+			getString("_UI_TwicedQueuedUnit_type") + " " + label;

+	}

+

+	/**

+	 * This handles model notifications by calling {@link #updateChildren} to update any cached

+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void notifyChanged(Notification notification) {

+		updateChildren(notification);

+		super.notifyChanged(notification);

+	}

+

+	/**

+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children

+	 * that can be created under this object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {

+		super.collectNewChildDescriptors(newChildDescriptors, object);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.editor/.classpath b/org.eclipse.emf.refactor.comrel.editor/.classpath
new file mode 100644
index 0000000..ed2bc12
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.emf.refactor.comrel.editor/.project b/org.eclipse.emf.refactor.comrel.editor/.project
new file mode 100644
index 0000000..1f77808
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.emf.refactor.comrel.editor</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.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+	</natures>

+</projectDescription>

diff --git a/org.eclipse.emf.refactor.comrel.editor/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.comrel.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..935fc51
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: CoMReL Editor

+Bundle-SymbolicName: org.eclipse.emf.refactor.comrel.editor;singleton:=true

+Bundle-Version: 0.9.0

+Bundle-ClassPath: .

+Bundle-Activator: comrel.presentation.ComrelEditorPlugin$Implementation

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: comrel.presentation

+Require-Bundle: org.eclipse.core.runtime,

+ org.eclipse.core.resources;visibility:=reexport,

+ org.eclipse.emf.refactor.comrel.edit;visibility:=reexport,

+ org.eclipse.emf.ecore.xmi;visibility:=reexport,

+ org.eclipse.emf.edit.ui;visibility:=reexport,

+ org.eclipse.ui.ide;visibility:=reexport

+Bundle-ActivationPolicy: lazy

diff --git a/org.eclipse.emf.refactor.comrel.editor/bin/.gitignore b/org.eclipse.emf.refactor.comrel.editor/bin/.gitignore
new file mode 100644
index 0000000..508dbce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/bin/.gitignore
@@ -0,0 +1 @@
+/comrel
diff --git a/org.eclipse.emf.refactor.comrel.editor/build.properties b/org.eclipse.emf.refactor.comrel.editor/build.properties
new file mode 100644
index 0000000..5dd2083
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/build.properties
@@ -0,0 +1,16 @@
+

+# <copyright>

+# </copyright>

+#

+# $Id$

+

+bin.includes = .,\

+               icons/,\

+               META-INF/,\

+               plugin.xml,\

+               plugin.properties,\

+               src/,\

+               bin/

+jars.compile.order = .

+source.. = src/

+output.. = bin/

diff --git a/org.eclipse.emf.refactor.comrel.editor/icons/full/obj16/ComrelModelFile.gif b/org.eclipse.emf.refactor.comrel.editor/icons/full/obj16/ComrelModelFile.gif
new file mode 100644
index 0000000..5d3db6b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/icons/full/obj16/ComrelModelFile.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.editor/icons/full/wizban/NewComrel.gif b/org.eclipse.emf.refactor.comrel.editor/icons/full/wizban/NewComrel.gif
new file mode 100644
index 0000000..54a4d3b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/icons/full/wizban/NewComrel.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.editor/plugin.properties b/org.eclipse.emf.refactor.comrel.editor/plugin.properties
new file mode 100644
index 0000000..2aa1642
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/plugin.properties
@@ -0,0 +1,57 @@
+

+# <copyright>

+# </copyright>

+#

+# $Id$

+

+pluginName = Comrel Editor

+providerName = www.example.org

+

+_UI_ComrelEditor_menu = &Comrel Editor

+

+_UI_CreateChild_menu_item = &New Child

+_UI_CreateSibling_menu_item = N&ew Sibling

+

+_UI_ShowPropertiesView_menu_item = Show &Properties View

+_UI_RefreshViewer_menu_item = &Refresh

+

+_UI_SelectionPage_label = Selection

+_UI_ParentPage_label = Parent

+_UI_ListPage_label = List

+_UI_TreePage_label = Tree

+_UI_TablePage_label = Table

+_UI_TreeWithColumnsPage_label = Tree with Columns

+_UI_ObjectColumn_label = Object

+_UI_SelfColumn_label = Self

+

+_UI_NoObjectSelected = Selected Nothing

+_UI_SingleObjectSelected = Selected Object: {0}

+_UI_MultiObjectSelected = Selected {0} Objects

+

+_UI_OpenEditorError_label = Open Editor

+

+_UI_Wizard_category = Example EMF Model Creation Wizards

+

+_UI_CreateModelError_message = Problems encountered in file "{0}"

+

+_UI_ComrelModelWizard_label = Comrel Model

+_UI_ComrelModelWizard_description = Create a new Comrel model

+

+_UI_ComrelEditor_label = Comrel Model Editor

+

+_UI_ComrelEditorFilenameDefaultBase = My

+_UI_ComrelEditorFilenameExtensions = comrel

+

+_UI_Wizard_label = New

+

+_WARN_FilenameExtension = The file name must end in ''.{0}''

+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}

+

+_UI_ModelObject = &Model Object

+_UI_XMLEncoding = &XML Encoding

+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1

+_UI_Wizard_initial_object_description = Select a model object to create

+

+_UI_FileConflict_label = File Conflict

+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?

+

diff --git a/org.eclipse.emf.refactor.comrel.editor/plugin.xml b/org.eclipse.emf.refactor.comrel.editor/plugin.xml
new file mode 100644
index 0000000..e9aa509
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/plugin.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.0"?>

+

+<!--

+ <copyright>

+ </copyright>

+

+ $Id$

+-->

+

+<plugin>

+

+   <extension point="org.eclipse.ui.newWizards">

+      <category

+            id="org.eclipse.emf.ecore.Wizard.category.ID"

+            name="%_UI_Wizard_category"/>

+      <wizard

+            id="comrel.presentation.ComrelModelWizardID"

+            name="CoMReL model"

+            class="comrel.presentation.ComrelModelWizard"

+            category="comrel.generator.category"

+            icon="icons/full/obj16/ComrelModelFile.gif">

+         <description>%_UI_ComrelModelWizard_description</description>

+         <selection class="org.eclipse.core.resources.IResource"/>

+      </wizard>

+   </extension>

+

+   <extension point="org.eclipse.ui.editors">

+      <editor

+            id="comrel.presentation.ComrelEditorID"

+            name="%_UI_ComrelEditor_label"

+            icon="icons/full/obj16/ComrelModelFile.gif"

+            extensions="comrel"

+            class="comrel.presentation.ComrelEditor"

+            contributorClass="comrel.presentation.ComrelActionBarContributor">

+      </editor>

+   </extension>

+

+</plugin>

diff --git a/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelActionBarContributor.java b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelActionBarContributor.java
new file mode 100644
index 0000000..a34cf0c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelActionBarContributor.java
@@ -0,0 +1,427 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.presentation;

+

+import java.util.ArrayList;

+import java.util.Collection;

+

+import org.eclipse.emf.common.ui.viewer.IViewerProvider;

+

+import org.eclipse.emf.edit.domain.EditingDomain;

+import org.eclipse.emf.edit.domain.IEditingDomainProvider;

+

+import org.eclipse.emf.edit.ui.action.ControlAction;

+import org.eclipse.emf.edit.ui.action.CreateChildAction;

+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;

+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;

+import org.eclipse.emf.edit.ui.action.LoadResourceAction;

+import org.eclipse.emf.edit.ui.action.ValidateAction;

+

+import org.eclipse.jface.action.Action;

+import org.eclipse.jface.action.ActionContributionItem;

+import org.eclipse.jface.action.IAction;

+import org.eclipse.jface.action.IContributionItem;

+import org.eclipse.jface.action.IContributionManager;

+import org.eclipse.jface.action.IMenuListener;

+import org.eclipse.jface.action.IMenuManager;

+import org.eclipse.jface.action.IToolBarManager;

+import org.eclipse.jface.action.MenuManager;

+import org.eclipse.jface.action.Separator;

+import org.eclipse.jface.action.SubContributionItem;

+

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.ISelectionChangedListener;

+import org.eclipse.jface.viewers.ISelectionProvider;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.SelectionChangedEvent;

+import org.eclipse.jface.viewers.Viewer;

+

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.PartInitException;

+

+/**

+ * This is the action bar contributor for the Comrel model editor.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ComrelActionBarContributor

+	extends EditingDomainActionBarContributor

+	implements ISelectionChangedListener {

+	/**

+	 * This keeps track of the active editor.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IEditorPart activeEditorPart;

+

+	/**

+	 * This keeps track of the current selection provider.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ISelectionProvider selectionProvider;

+

+	/**

+	 * This action opens the Properties view.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IAction showPropertiesViewAction =

+		new Action(ComrelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {

+			@Override

+			public void run() {

+				try {

+					getPage().showView("org.eclipse.ui.views.PropertySheet");

+				}

+				catch (PartInitException exception) {

+					ComrelEditorPlugin.INSTANCE.log(exception);

+				}

+			}

+		};

+

+	/**

+	 * This action refreshes the viewer of the current editor if the editor

+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IAction refreshViewerAction =

+		new Action(ComrelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {

+			@Override

+			public boolean isEnabled() {

+				return activeEditorPart instanceof IViewerProvider;

+			}

+

+			@Override

+			public void run() {

+				if (activeEditorPart instanceof IViewerProvider) {

+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();

+					if (viewer != null) {

+						viewer.refresh();

+					}

+				}

+			}

+		};

+

+	/**

+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor

+	 * generated for the current selection by the item provider.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<IAction> createChildActions;

+

+	/**

+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IMenuManager createChildMenuManager;

+

+	/**

+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor

+	 * generated for the current selection by the item provider.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<IAction> createSiblingActions;

+

+	/**

+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IMenuManager createSiblingMenuManager;

+

+	/**

+	 * This creates an instance of the contributor.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelActionBarContributor() {

+		super(ADDITIONS_LAST_STYLE);

+		loadResourceAction = new LoadResourceAction();

+		validateAction = new ValidateAction();

+		controlAction = new ControlAction();

+	}

+

+	/**

+	 * This adds Separators for editor additions to the tool bar.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void contributeToToolBar(IToolBarManager toolBarManager) {

+		toolBarManager.add(new Separator("comrel-settings"));

+		toolBarManager.add(new Separator("comrel-additions"));

+	}

+

+	/**

+	 * This adds to the menu bar a menu and some separators for editor additions,

+	 * as well as the sub-menus for object creation items.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void contributeToMenu(IMenuManager menuManager) {

+		super.contributeToMenu(menuManager);

+

+		IMenuManager submenuManager = new MenuManager(ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelEditor_menu"), "comrelMenuID");

+		menuManager.insertAfter("additions", submenuManager);

+		submenuManager.add(new Separator("settings"));

+		submenuManager.add(new Separator("actions"));

+		submenuManager.add(new Separator("additions"));

+		submenuManager.add(new Separator("additions-end"));

+

+		// Prepare for CreateChild item addition or removal.

+		//

+		createChildMenuManager = new MenuManager(ComrelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));

+		submenuManager.insertBefore("additions", createChildMenuManager);

+

+		// Prepare for CreateSibling item addition or removal.

+		//

+		createSiblingMenuManager = new MenuManager(ComrelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));

+		submenuManager.insertBefore("additions", createSiblingMenuManager);

+

+		// Force an update because Eclipse hides empty menus now.

+		//

+		submenuManager.addMenuListener

+			(new IMenuListener() {

+				 public void menuAboutToShow(IMenuManager menuManager) {

+					 menuManager.updateAll(true);

+				 }

+			 });

+

+		addGlobalActions(submenuManager);

+	}

+

+	/**

+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setActiveEditor(IEditorPart part) {

+		super.setActiveEditor(part);

+		activeEditorPart = part;

+

+		// Switch to the new selection provider.

+		//

+		if (selectionProvider != null) {

+			selectionProvider.removeSelectionChangedListener(this);

+		}

+		if (part == null) {

+			selectionProvider = null;

+		}

+		else {

+			selectionProvider = part.getSite().getSelectionProvider();

+			selectionProvider.addSelectionChangedListener(this);

+

+			// Fake a selection changed event to update the menus.

+			//

+			if (selectionProvider.getSelection() != null) {

+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));

+			}

+		}

+	}

+

+	/**

+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},

+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings

+	 * that can be added to the selected object and updating the menus accordingly.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void selectionChanged(SelectionChangedEvent event) {

+		// Remove any menu items for old selection.

+		//

+		if (createChildMenuManager != null) {

+			depopulateManager(createChildMenuManager, createChildActions);

+		}

+		if (createSiblingMenuManager != null) {

+			depopulateManager(createSiblingMenuManager, createSiblingActions);

+		}

+

+		// Query the new selection for appropriate new child/sibling descriptors

+		//

+		Collection<?> newChildDescriptors = null;

+		Collection<?> newSiblingDescriptors = null;

+

+		ISelection selection = event.getSelection();

+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {

+			Object object = ((IStructuredSelection)selection).getFirstElement();

+

+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();

+

+			newChildDescriptors = domain.getNewChildDescriptors(object, null);

+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);

+		}

+

+		// Generate actions for selection; populate and redraw the menus.

+		//

+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);

+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);

+

+		if (createChildMenuManager != null) {

+			populateManager(createChildMenuManager, createChildActions, null);

+			createChildMenuManager.update(true);

+		}

+		if (createSiblingMenuManager != null) {

+			populateManager(createSiblingMenuManager, createSiblingActions, null);

+			createSiblingMenuManager.update(true);

+		}

+	}

+

+	/**

+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,

+	 * and returns the collection of these actions.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {

+		Collection<IAction> actions = new ArrayList<IAction>();

+		if (descriptors != null) {

+			for (Object descriptor : descriptors) {

+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));

+			}

+		}

+		return actions;

+	}

+

+	/**

+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,

+	 * and returns the collection of these actions.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {

+		Collection<IAction> actions = new ArrayList<IAction>();

+		if (descriptors != null) {

+			for (Object descriptor : descriptors) {

+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));

+			}

+		}

+		return actions;

+	}

+

+	/**

+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s

+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,

+	 * by inserting them before the specified contribution item <code>contributionID</code>.

+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {

+		if (actions != null) {

+			for (IAction action : actions) {

+				if (contributionID != null) {

+					manager.insertBefore(contributionID, action);

+				}

+				else {

+					manager.add(action);

+				}

+			}

+		}

+	}

+		

+	/**

+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s

+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {

+		if (actions != null) {

+			IContributionItem[] items = manager.getItems();

+			for (int i = 0; i < items.length; i++) {

+				// Look into SubContributionItems

+				//

+				IContributionItem contributionItem = items[i];

+				while (contributionItem instanceof SubContributionItem) {

+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();

+				}

+

+				// Delete the ActionContributionItems with matching action.

+				//

+				if (contributionItem instanceof ActionContributionItem) {

+					IAction action = ((ActionContributionItem)contributionItem).getAction();

+					if (actions.contains(action)) {

+						manager.remove(contributionItem);

+					}

+				}

+			}

+		}

+	}

+

+	/**

+	 * This populates the pop-up menu before it appears.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void menuAboutToShow(IMenuManager menuManager) {

+		super.menuAboutToShow(menuManager);

+		MenuManager submenuManager = null;

+

+		submenuManager = new MenuManager(ComrelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));

+		populateManager(submenuManager, createChildActions, null);

+		menuManager.insertBefore("edit", submenuManager);

+

+		submenuManager = new MenuManager(ComrelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));

+		populateManager(submenuManager, createSiblingActions, null);

+		menuManager.insertBefore("edit", submenuManager);

+	}

+

+	/**

+	 * This inserts global actions before the "additions-end" separator.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void addGlobalActions(IMenuManager menuManager) {

+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));

+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);

+

+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		

+		menuManager.insertAfter("ui-actions", refreshViewerAction);

+

+		super.addGlobalActions(menuManager);

+	}

+

+	/**

+	 * This ensures that a delete action will clean up all references to deleted objects.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected boolean removeAllReferencesOnDelete() {

+		return true;

+	}

+

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelEditor.java b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelEditor.java
new file mode 100644
index 0000000..57725e8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelEditor.java
@@ -0,0 +1,1816 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.presentation;

+

+

+import java.io.IOException;

+import java.io.InputStream;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.EventObject;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.LinkedHashMap;

+import java.util.List;

+import java.util.Map;

+

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IMarker;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.resources.IResourceChangeEvent;

+import org.eclipse.core.resources.IResourceChangeListener;

+import org.eclipse.core.resources.IResourceDelta;

+import org.eclipse.core.resources.IResourceDeltaVisitor;

+import org.eclipse.core.resources.ResourcesPlugin;

+

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.NullProgressMonitor;

+

+import org.eclipse.jface.action.IMenuListener;

+import org.eclipse.jface.action.IMenuManager;

+import org.eclipse.jface.action.IStatusLineManager;

+import org.eclipse.jface.action.IToolBarManager;

+import org.eclipse.jface.action.MenuManager;

+import org.eclipse.jface.action.Separator;

+

+import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.jface.dialogs.ProgressMonitorDialog;

+

+import org.eclipse.jface.viewers.ColumnWeightData;

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.ISelectionChangedListener;

+import org.eclipse.jface.viewers.ISelectionProvider;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.ListViewer;

+import org.eclipse.jface.viewers.SelectionChangedEvent;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.jface.viewers.StructuredViewer;

+import org.eclipse.jface.viewers.TableLayout;

+import org.eclipse.jface.viewers.TableViewer;

+import org.eclipse.jface.viewers.TreeViewer;

+import org.eclipse.jface.viewers.Viewer;

+

+import org.eclipse.swt.SWT;

+

+import org.eclipse.swt.custom.CTabFolder;

+

+import org.eclipse.swt.dnd.DND;

+import org.eclipse.swt.dnd.Transfer;

+

+import org.eclipse.swt.events.ControlAdapter;

+import org.eclipse.swt.events.ControlEvent;

+

+import org.eclipse.swt.graphics.Point;

+

+import org.eclipse.swt.layout.FillLayout;

+

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Menu;

+import org.eclipse.swt.widgets.Table;

+import org.eclipse.swt.widgets.TableColumn;

+import org.eclipse.swt.widgets.Tree;

+import org.eclipse.swt.widgets.TreeColumn;

+

+import org.eclipse.ui.IActionBars;

+import org.eclipse.ui.IEditorInput;

+import org.eclipse.ui.IEditorPart;

+import org.eclipse.ui.IEditorSite;

+import org.eclipse.ui.IPartListener;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.PartInitException;

+

+import org.eclipse.ui.dialogs.SaveAsDialog;

+

+import org.eclipse.ui.ide.IGotoMarker;

+

+import org.eclipse.ui.part.FileEditorInput;

+import org.eclipse.ui.part.MultiPageEditorPart;

+

+import org.eclipse.ui.views.contentoutline.ContentOutline;

+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;

+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;

+

+import org.eclipse.ui.views.properties.IPropertySheetPage;

+import org.eclipse.ui.views.properties.PropertySheet;

+import org.eclipse.ui.views.properties.PropertySheetPage;

+

+import org.eclipse.emf.common.command.BasicCommandStack;

+import org.eclipse.emf.common.command.Command;

+import org.eclipse.emf.common.command.CommandStack;

+import org.eclipse.emf.common.command.CommandStackListener;

+

+import org.eclipse.emf.common.notify.AdapterFactory;

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.common.ui.MarkerHelper;

+import org.eclipse.emf.common.ui.ViewerPane;

+

+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;

+

+import org.eclipse.emf.common.ui.viewer.IViewerProvider;

+

+import org.eclipse.emf.common.util.BasicDiagnostic;

+import org.eclipse.emf.common.util.Diagnostic;

+import org.eclipse.emf.common.util.URI;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EValidator;

+

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+

+import org.eclipse.emf.ecore.util.EContentAdapter;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+

+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;

+import org.eclipse.emf.edit.domain.EditingDomain;

+import org.eclipse.emf.edit.domain.IEditingDomainProvider;

+

+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;

+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;

+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;

+

+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;

+

+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;

+

+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;

+

+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;

+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;

+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;

+

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;

+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;

+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;

+

+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;

+import org.eclipse.emf.edit.ui.util.EditUIUtil;

+

+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;

+

+import comrel.provider.ComrelItemProviderAdapterFactory;

+

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+

+/**

+ * This is an example of a Comrel model editor.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ComrelEditor

+	extends MultiPageEditorPart

+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {

+	/**

+	 * This keeps track of the editing domain that is used to track all changes to the model.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected AdapterFactoryEditingDomain editingDomain;

+

+	/**

+	 * This is the one adapter factory used for providing views of the model.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ComposedAdapterFactory adapterFactory;

+

+	/**

+	 * This is the content outline page.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IContentOutlinePage contentOutlinePage;

+

+	/**

+	 * This is a kludge...

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IStatusLineManager contentOutlineStatusLineManager;

+

+	/**

+	 * This is the content outline page's viewer.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TreeViewer contentOutlineViewer;

+

+	/**

+	 * This is the property sheet page.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected PropertySheetPage propertySheetPage;

+

+	/**

+	 * This is the viewer that shadows the selection in the content outline.

+	 * The parent relation must be correctly defined for this to work.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TreeViewer selectionViewer;

+

+	/**

+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TreeViewer parentViewer;

+

+	/**

+	 * This shows how a tree view works.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TreeViewer treeViewer;

+

+	/**

+	 * This shows how a list view works.

+	 * A list viewer doesn't support icons.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ListViewer listViewer;

+

+	/**

+	 * This shows how a table view works.

+	 * A table can be used as a list with icons.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TableViewer tableViewer;

+

+	/**

+	 * This shows how a tree view with columns works.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TreeViewer treeViewerWithColumns;

+

+	/**

+	 * This keeps track of the active viewer pane, in the book.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ViewerPane currentViewerPane;

+

+	/**

+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Viewer currentViewer;

+

+	/**

+	 * This listens to which ever viewer is active.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ISelectionChangedListener selectionChangedListener;

+

+	/**

+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();

+

+	/**

+	 * This keeps track of the selection of the editor as a whole.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ISelection editorSelection = StructuredSelection.EMPTY;

+

+	/**

+	 * The MarkerHelper is responsible for creating workspace resource markers presented

+	 * in Eclipse's Problems View.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();

+

+	/**

+	 * This listens for when the outline becomes active

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IPartListener partListener =

+		new IPartListener() {

+			public void partActivated(IWorkbenchPart p) {

+				if (p instanceof ContentOutline) {

+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {

+						getActionBarContributor().setActiveEditor(ComrelEditor.this);

+

+						setCurrentViewer(contentOutlineViewer);

+					}

+				}

+				else if (p instanceof PropertySheet) {

+					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {

+						getActionBarContributor().setActiveEditor(ComrelEditor.this);

+						handleActivate();

+					}

+				}

+				else if (p == ComrelEditor.this) {

+					handleActivate();

+				}

+			}

+			public void partBroughtToTop(IWorkbenchPart p) {

+				// Ignore.

+			}

+			public void partClosed(IWorkbenchPart p) {

+				// Ignore.

+			}

+			public void partDeactivated(IWorkbenchPart p) {

+				// Ignore.

+			}

+			public void partOpened(IWorkbenchPart p) {

+				// Ignore.

+			}

+		};

+

+	/**

+	 * Resources that have been removed since last activation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<Resource> removedResources = new ArrayList<Resource>();

+

+	/**

+	 * Resources that have been changed since last activation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<Resource> changedResources = new ArrayList<Resource>();

+

+	/**

+	 * Resources that have been saved.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<Resource> savedResources = new ArrayList<Resource>();

+

+	/**

+	 * Map to store the diagnostic associated with a resource.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();

+

+	/**

+	 * Controls whether the problem indication should be updated.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected boolean updateProblemIndication = true;

+

+	/**

+	 * Adapter used to update the problem indication when resources are demanded loaded.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected EContentAdapter problemIndicationAdapter = 

+		new EContentAdapter() {

+			@Override

+			public void notifyChanged(Notification notification) {

+				if (notification.getNotifier() instanceof Resource) {

+					switch (notification.getFeatureID(Resource.class)) {

+						case Resource.RESOURCE__IS_LOADED:

+						case Resource.RESOURCE__ERRORS:

+						case Resource.RESOURCE__WARNINGS: {

+							Resource resource = (Resource)notification.getNotifier();

+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);

+							if (diagnostic.getSeverity() != Diagnostic.OK) {

+								resourceToDiagnosticMap.put(resource, diagnostic);

+							}

+							else {

+								resourceToDiagnosticMap.remove(resource);

+							}

+

+							if (updateProblemIndication) {

+								getSite().getShell().getDisplay().asyncExec

+									(new Runnable() {

+										 public void run() {

+											 updateProblemIndication();

+										 }

+									 });

+							}

+							break;

+						}

+					}

+				}

+				else {

+					super.notifyChanged(notification);

+				}

+			}

+

+			@Override

+			protected void setTarget(Resource target) {

+				basicSetTarget(target);

+			}

+

+			@Override

+			protected void unsetTarget(Resource target) {

+				basicUnsetTarget(target);

+			}

+		};

+

+	/**

+	 * This listens for workspace changes.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IResourceChangeListener resourceChangeListener =

+		new IResourceChangeListener() {

+			public void resourceChanged(IResourceChangeEvent event) {

+				IResourceDelta delta = event.getDelta();

+				try {

+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {

+						protected ResourceSet resourceSet = editingDomain.getResourceSet();

+						protected Collection<Resource> changedResources = new ArrayList<Resource>();

+						protected Collection<Resource> removedResources = new ArrayList<Resource>();

+

+						public boolean visit(IResourceDelta delta) {

+							if (delta.getResource().getType() == IResource.FILE) {

+								if (delta.getKind() == IResourceDelta.REMOVED ||

+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {

+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);

+									if (resource != null) {

+										if (delta.getKind() == IResourceDelta.REMOVED) {

+											removedResources.add(resource);

+										}

+										else if (!savedResources.remove(resource)) {

+											changedResources.add(resource);

+										}

+									}

+								}

+							}

+

+							return true;

+						}

+

+						public Collection<Resource> getChangedResources() {

+							return changedResources;

+						}

+

+						public Collection<Resource> getRemovedResources() {

+							return removedResources;

+						}

+					}

+

+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();

+					delta.accept(visitor);

+

+					if (!visitor.getRemovedResources().isEmpty()) {

+						getSite().getShell().getDisplay().asyncExec

+							(new Runnable() {

+								 public void run() {

+									 removedResources.addAll(visitor.getRemovedResources());

+									 if (!isDirty()) {

+										 getSite().getPage().closeEditor(ComrelEditor.this, false);

+									 }

+								 }

+							 });

+					}

+

+					if (!visitor.getChangedResources().isEmpty()) {

+						getSite().getShell().getDisplay().asyncExec

+							(new Runnable() {

+								 public void run() {

+									 changedResources.addAll(visitor.getChangedResources());

+									 if (getSite().getPage().getActiveEditor() == ComrelEditor.this) {

+										 handleActivate();

+									 }

+								 }

+							 });

+					}

+				}

+				catch (CoreException exception) {

+					ComrelEditorPlugin.INSTANCE.log(exception);

+				}

+			}

+		};

+

+	/**

+	 * Handles activation of the editor or it's associated views.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void handleActivate() {

+		// Recompute the read only state.

+		//

+		if (editingDomain.getResourceToReadOnlyMap() != null) {

+		  editingDomain.getResourceToReadOnlyMap().clear();

+

+		  // Refresh any actions that may become enabled or disabled.

+		  //

+		  setSelection(getSelection());

+		}

+

+		if (!removedResources.isEmpty()) {

+			if (handleDirtyConflict()) {

+				getSite().getPage().closeEditor(ComrelEditor.this, false);

+			}

+			else {

+				removedResources.clear();

+				changedResources.clear();

+				savedResources.clear();

+			}

+		}

+		else if (!changedResources.isEmpty()) {

+			changedResources.removeAll(savedResources);

+			handleChangedResources();

+			changedResources.clear();

+			savedResources.clear();

+		}

+	}

+

+	/**

+	 * Handles what to do with changed resources on activation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void handleChangedResources() {

+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {

+			if (isDirty()) {

+				changedResources.addAll(editingDomain.getResourceSet().getResources());

+			}

+			editingDomain.getCommandStack().flush();

+

+			updateProblemIndication = false;

+			for (Resource resource : changedResources) {

+				if (resource.isLoaded()) {

+					resource.unload();

+					try {

+						resource.load(Collections.EMPTY_MAP);

+					}

+					catch (IOException exception) {

+						if (!resourceToDiagnosticMap.containsKey(resource)) {

+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));

+						}

+					}

+				}

+			}

+

+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {

+				setSelection(StructuredSelection.EMPTY);

+			}

+

+			updateProblemIndication = true;

+			updateProblemIndication();

+		}

+	}

+  

+	/**

+	 * Updates the problems indication with the information described in the specified diagnostic.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void updateProblemIndication() {

+		if (updateProblemIndication) {

+			BasicDiagnostic diagnostic =

+				new BasicDiagnostic

+					(Diagnostic.OK,

+					 "comrel.editor",

+					 0,

+					 null,

+					 new Object [] { editingDomain.getResourceSet() });

+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {

+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {

+					diagnostic.add(childDiagnostic);

+				}

+			}

+

+			int lastEditorPage = getPageCount() - 1;

+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {

+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);

+				if (diagnostic.getSeverity() != Diagnostic.OK) {

+					setActivePage(lastEditorPage);

+				}

+			}

+			else if (diagnostic.getSeverity() != Diagnostic.OK) {

+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();

+				problemEditorPart.setDiagnostic(diagnostic);

+				problemEditorPart.setMarkerHelper(markerHelper);

+				try {

+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());

+					setPageText(lastEditorPage, problemEditorPart.getPartName());

+					setActivePage(lastEditorPage);

+					showTabs();

+				}

+				catch (PartInitException exception) {

+					ComrelEditorPlugin.INSTANCE.log(exception);

+				}

+			}

+

+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {

+				markerHelper.deleteMarkers(editingDomain.getResourceSet());

+				if (diagnostic.getSeverity() != Diagnostic.OK) {

+					try {

+						markerHelper.createMarkers(diagnostic);

+					}

+					catch (CoreException exception) {

+						ComrelEditorPlugin.INSTANCE.log(exception);

+					}

+				}

+			}

+		}

+	}

+

+	/**

+	 * Shows a dialog that asks if conflicting changes should be discarded.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected boolean handleDirtyConflict() {

+		return

+			MessageDialog.openQuestion

+				(getSite().getShell(),

+				 getString("_UI_FileConflict_label"),

+				 getString("_WARN_FileConflict"));

+	}

+

+	/**

+	 * This creates a model editor.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelEditor() {

+		super();

+		initializeEditingDomain();

+	}

+

+	/**

+	 * This sets up the editing domain for the model editor.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void initializeEditingDomain() {

+		// Create an adapter factory that yields item providers.

+		//

+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);

+

+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());

+		adapterFactory.addAdapterFactory(new ComrelItemProviderAdapterFactory());

+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());

+

+		// Create the command stack that will notify this editor as commands are executed.

+		//

+		BasicCommandStack commandStack = new BasicCommandStack();

+

+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.

+		//

+		commandStack.addCommandStackListener

+			(new CommandStackListener() {

+				 public void commandStackChanged(final EventObject event) {

+					 getContainer().getDisplay().asyncExec

+						 (new Runnable() {

+							  public void run() {

+								  firePropertyChange(IEditorPart.PROP_DIRTY);

+

+								  // Try to select the affected objects.

+								  //

+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();

+								  if (mostRecentCommand != null) {

+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());

+								  }

+								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {

+									  propertySheetPage.refresh();

+								  }

+							  }

+						  });

+				 }

+			 });

+

+		// Create the editing domain with a special command stack.

+		//

+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());

+	}

+

+	/**

+	 * This is here for the listener to be able to call it.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+			@Override

+	protected void firePropertyChange(int action) {

+		super.firePropertyChange(action);

+	}

+

+	/**

+	 * This sets the selection into whichever viewer is active.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSelectionToViewer(Collection<?> collection) {

+		final Collection<?> theSelection = collection;

+		// Make sure it's okay.

+		//

+		if (theSelection != null && !theSelection.isEmpty()) {

+			Runnable runnable =

+				new Runnable() {

+					public void run() {

+						// Try to select the items in the current content viewer of the editor.

+						//

+						if (currentViewer != null) {

+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);

+						}

+					}

+				};

+			getSite().getShell().getDisplay().asyncExec(runnable);

+		}

+	}

+

+	/**

+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.

+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}

+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EditingDomain getEditingDomain() {

+		return editingDomain;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {

+			super(adapterFactory);

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		@Override

+		public Object [] getElements(Object object) {

+			Object parent = super.getParent(object);

+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		@Override

+		public Object [] getChildren(Object object) {

+			Object parent = super.getParent(object);

+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		@Override

+		public boolean hasChildren(Object object) {

+			Object parent = super.getParent(object);

+			return parent != null;

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		@Override

+		public Object getParent(Object object) {

+			return null;

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setCurrentViewerPane(ViewerPane viewerPane) {

+		if (currentViewerPane != viewerPane) {

+			if (currentViewerPane != null) {

+				currentViewerPane.showFocus(false);

+			}

+			currentViewerPane = viewerPane;

+		}

+		setCurrentViewer(currentViewerPane.getViewer());

+	}

+

+	/**

+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,

+	 * is the current one.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setCurrentViewer(Viewer viewer) {

+		// If it is changing...

+		//

+		if (currentViewer != viewer) {

+			if (selectionChangedListener == null) {

+				// Create the listener on demand.

+				//

+				selectionChangedListener =

+					new ISelectionChangedListener() {

+						// This just notifies those things that are affected by the section.

+						//

+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {

+							setSelection(selectionChangedEvent.getSelection());

+						}

+					};

+			}

+

+			// Stop listening to the old one.

+			//

+			if (currentViewer != null) {

+				currentViewer.removeSelectionChangedListener(selectionChangedListener);

+			}

+

+			// Start listening to the new one.

+			//

+			if (viewer != null) {

+				viewer.addSelectionChangedListener(selectionChangedListener);

+			}

+

+			// Remember it.

+			//

+			currentViewer = viewer;

+

+			// Set the editors selection based on the current viewer's selection.

+			//

+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());

+		}

+	}

+

+	/**

+	 * This returns the viewer as required by the {@link IViewerProvider} interface.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Viewer getViewer() {

+		return currentViewer;

+	}

+

+	/**

+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createContextMenuFor(StructuredViewer viewer) {

+		MenuManager contextMenu = new MenuManager("#PopUp");

+		contextMenu.add(new Separator("additions"));

+		contextMenu.setRemoveAllWhenShown(true);

+		contextMenu.addMenuListener(this);

+		Menu menu= contextMenu.createContextMenu(viewer.getControl());

+		viewer.getControl().setMenu(menu);

+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));

+

+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;

+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };

+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));

+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));

+	}

+

+	/**

+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void createModel() {

+		URI resourceURI = EditUIUtil.getURI(getEditorInput());

+		Exception exception = null;

+		Resource resource = null;

+		try {

+			// Load the resource through the editing domain.

+			//

+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);

+		}

+		catch (Exception e) {

+			exception = e;

+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);

+		}

+

+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);

+		if (diagnostic.getSeverity() != Diagnostic.OK) {

+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));

+		}

+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);

+	}

+

+	/**

+	 * Returns a diagnostic describing the errors and warnings listed in the resource

+	 * and the specified exception (if any).

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {

+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {

+			BasicDiagnostic basicDiagnostic =

+				new BasicDiagnostic

+					(Diagnostic.ERROR,

+					 "comrel.editor",

+					 0,

+					 getString("_UI_CreateModelError_message", resource.getURI()),

+					 new Object [] { exception == null ? (Object)resource : exception });

+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));

+			return basicDiagnostic;

+		}

+		else if (exception != null) {

+			return

+				new BasicDiagnostic

+					(Diagnostic.ERROR,

+					 "comrel.editor",

+					 0,

+					 getString("_UI_CreateModelError_message", resource.getURI()),

+					 new Object[] { exception });

+		}

+		else {

+			return Diagnostic.OK_INSTANCE;

+		}

+	}

+

+	/**

+	 * This is the method used by the framework to install your own controls.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void createPages() {

+		// Creates the model from the editor input

+		//

+		createModel();

+

+		// Only creates the other pages if there is something that can be edited

+		//

+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {

+			// Create a page for the selection tree view.

+			//

+			{

+				ViewerPane viewerPane =

+					new ViewerPane(getSite().getPage(), ComrelEditor.this) {

+						@Override

+						public Viewer createViewer(Composite composite) {

+							Tree tree = new Tree(composite, SWT.MULTI);

+							TreeViewer newTreeViewer = new TreeViewer(tree);

+							return newTreeViewer;

+						}

+						@Override

+						public void requestActivation() {

+							super.requestActivation();

+							setCurrentViewerPane(this);

+						}

+					};

+				viewerPane.createControl(getContainer());

+

+				selectionViewer = (TreeViewer)viewerPane.getViewer();

+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));

+

+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+				selectionViewer.setInput(editingDomain.getResourceSet());

+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);

+				viewerPane.setTitle(editingDomain.getResourceSet());

+

+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);

+

+				createContextMenuFor(selectionViewer);

+				int pageIndex = addPage(viewerPane.getControl());

+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));

+			}

+

+			// Create a page for the parent tree view.

+			//

+			{

+				ViewerPane viewerPane =

+					new ViewerPane(getSite().getPage(), ComrelEditor.this) {

+						@Override

+						public Viewer createViewer(Composite composite) {

+							Tree tree = new Tree(composite, SWT.MULTI);

+							TreeViewer newTreeViewer = new TreeViewer(tree);

+							return newTreeViewer;

+						}

+						@Override

+						public void requestActivation() {

+							super.requestActivation();

+							setCurrentViewerPane(this);

+						}

+					};

+				viewerPane.createControl(getContainer());

+

+				parentViewer = (TreeViewer)viewerPane.getViewer();

+				parentViewer.setAutoExpandLevel(30);

+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));

+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+

+				createContextMenuFor(parentViewer);

+				int pageIndex = addPage(viewerPane.getControl());

+				setPageText(pageIndex, getString("_UI_ParentPage_label"));

+			}

+

+			// This is the page for the list viewer

+			//

+			{

+				ViewerPane viewerPane =

+					new ViewerPane(getSite().getPage(), ComrelEditor.this) {

+						@Override

+						public Viewer createViewer(Composite composite) {

+							return new ListViewer(composite);

+						}

+						@Override

+						public void requestActivation() {

+							super.requestActivation();

+							setCurrentViewerPane(this);

+						}

+					};

+				viewerPane.createControl(getContainer());

+				listViewer = (ListViewer)viewerPane.getViewer();

+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));

+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+

+				createContextMenuFor(listViewer);

+				int pageIndex = addPage(viewerPane.getControl());

+				setPageText(pageIndex, getString("_UI_ListPage_label"));

+			}

+

+			// This is the page for the tree viewer

+			//

+			{

+				ViewerPane viewerPane =

+					new ViewerPane(getSite().getPage(), ComrelEditor.this) {

+						@Override

+						public Viewer createViewer(Composite composite) {

+							return new TreeViewer(composite);

+						}

+						@Override

+						public void requestActivation() {

+							super.requestActivation();

+							setCurrentViewerPane(this);

+						}

+					};

+				viewerPane.createControl(getContainer());

+				treeViewer = (TreeViewer)viewerPane.getViewer();

+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));

+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+

+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);

+

+				createContextMenuFor(treeViewer);

+				int pageIndex = addPage(viewerPane.getControl());

+				setPageText(pageIndex, getString("_UI_TreePage_label"));

+			}

+

+			// This is the page for the table viewer.

+			//

+			{

+				ViewerPane viewerPane =

+					new ViewerPane(getSite().getPage(), ComrelEditor.this) {

+						@Override

+						public Viewer createViewer(Composite composite) {

+							return new TableViewer(composite);

+						}

+						@Override

+						public void requestActivation() {

+							super.requestActivation();

+							setCurrentViewerPane(this);

+						}

+					};

+				viewerPane.createControl(getContainer());

+				tableViewer = (TableViewer)viewerPane.getViewer();

+

+				Table table = tableViewer.getTable();

+				TableLayout layout = new TableLayout();

+				table.setLayout(layout);

+				table.setHeaderVisible(true);

+				table.setLinesVisible(true);

+

+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);

+				layout.addColumnData(new ColumnWeightData(3, 100, true));

+				objectColumn.setText(getString("_UI_ObjectColumn_label"));

+				objectColumn.setResizable(true);

+

+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);

+				layout.addColumnData(new ColumnWeightData(2, 100, true));

+				selfColumn.setText(getString("_UI_SelfColumn_label"));

+				selfColumn.setResizable(true);

+

+				tableViewer.setColumnProperties(new String [] {"a", "b"});

+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));

+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+

+				createContextMenuFor(tableViewer);

+				int pageIndex = addPage(viewerPane.getControl());

+				setPageText(pageIndex, getString("_UI_TablePage_label"));

+			}

+

+			// This is the page for the table tree viewer.

+			//

+			{

+				ViewerPane viewerPane =

+					new ViewerPane(getSite().getPage(), ComrelEditor.this) {

+						@Override

+						public Viewer createViewer(Composite composite) {

+							return new TreeViewer(composite);

+						}

+						@Override

+						public void requestActivation() {

+							super.requestActivation();

+							setCurrentViewerPane(this);

+						}

+					};

+				viewerPane.createControl(getContainer());

+

+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();

+

+				Tree tree = treeViewerWithColumns.getTree();

+				tree.setLayoutData(new FillLayout());

+				tree.setHeaderVisible(true);

+				tree.setLinesVisible(true);

+

+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);

+				objectColumn.setText(getString("_UI_ObjectColumn_label"));

+				objectColumn.setResizable(true);

+				objectColumn.setWidth(250);

+

+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);

+				selfColumn.setText(getString("_UI_SelfColumn_label"));

+				selfColumn.setResizable(true);

+				selfColumn.setWidth(200);

+

+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});

+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));

+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+

+				createContextMenuFor(treeViewerWithColumns);

+				int pageIndex = addPage(viewerPane.getControl());

+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));

+			}

+

+			getSite().getShell().getDisplay().asyncExec

+				(new Runnable() {

+					 public void run() {

+						 setActivePage(0);

+					 }

+				 });

+		}

+

+		// Ensures that this editor will only display the page's tab

+		// area if there are more than one page

+		//

+		getContainer().addControlListener

+			(new ControlAdapter() {

+				boolean guard = false;

+				@Override

+				public void controlResized(ControlEvent event) {

+					if (!guard) {

+						guard = true;

+						hideTabs();

+						guard = false;

+					}

+				}

+			 });

+

+		getSite().getShell().getDisplay().asyncExec

+			(new Runnable() {

+				 public void run() {

+					 updateProblemIndication();

+				 }

+			 });

+	}

+

+	/**

+	 * If there is just one page in the multi-page editor part,

+	 * this hides the single tab at the bottom.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void hideTabs() {

+		if (getPageCount() <= 1) {

+			setPageText(0, "");

+			if (getContainer() instanceof CTabFolder) {

+				((CTabFolder)getContainer()).setTabHeight(1);

+				Point point = getContainer().getSize();

+				getContainer().setSize(point.x, point.y + 6);

+			}

+		}

+	}

+

+	/**

+	 * If there is more than one page in the multi-page editor part,

+	 * this shows the tabs at the bottom.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void showTabs() {

+		if (getPageCount() > 1) {

+			setPageText(0, getString("_UI_SelectionPage_label"));

+			if (getContainer() instanceof CTabFolder) {

+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);

+				Point point = getContainer().getSize();

+				getContainer().setSize(point.x, point.y - 6);

+			}

+		}

+	}

+

+	/**

+	 * This is used to track the active viewer.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected void pageChange(int pageIndex) {

+		super.pageChange(pageIndex);

+

+		if (contentOutlinePage != null) {

+			handleContentOutlineSelection(contentOutlinePage.getSelection());

+		}

+	}

+

+	/**

+	 * This is how the framework determines which interfaces we implement.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@SuppressWarnings("rawtypes")

+	@Override

+	public Object getAdapter(Class key) {

+		if (key.equals(IContentOutlinePage.class)) {

+			return showOutlineView() ? getContentOutlinePage() : null;

+		}

+		else if (key.equals(IPropertySheetPage.class)) {

+			return getPropertySheetPage();

+		}

+		else if (key.equals(IGotoMarker.class)) {

+			return this;

+		}

+		else {

+			return super.getAdapter(key);

+		}

+	}

+

+	/**

+	 * This accesses a cached version of the content outliner.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public IContentOutlinePage getContentOutlinePage() {

+		if (contentOutlinePage == null) {

+			// The content outline is just a tree.

+			//

+			class MyContentOutlinePage extends ContentOutlinePage {

+				@Override

+				public void createControl(Composite parent) {

+					super.createControl(parent);

+					contentOutlineViewer = getTreeViewer();

+					contentOutlineViewer.addSelectionChangedListener(this);

+

+					// Set up the tree viewer.

+					//

+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));

+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

+					contentOutlineViewer.setInput(editingDomain.getResourceSet());

+

+					// Make sure our popups work.

+					//

+					createContextMenuFor(contentOutlineViewer);

+

+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {

+					  // Select the root object in the view.

+					  //

+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);

+					}

+				}

+

+				@Override

+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {

+					super.makeContributions(menuManager, toolBarManager, statusLineManager);

+					contentOutlineStatusLineManager = statusLineManager;

+				}

+

+				@Override

+				public void setActionBars(IActionBars actionBars) {

+					super.setActionBars(actionBars);

+					getActionBarContributor().shareGlobalActions(this, actionBars);

+				}

+			}

+

+			contentOutlinePage = new MyContentOutlinePage();

+

+			// Listen to selection so that we can handle it is a special way.

+			//

+			contentOutlinePage.addSelectionChangedListener

+				(new ISelectionChangedListener() {

+					 // This ensures that we handle selections correctly.

+					 //

+					 public void selectionChanged(SelectionChangedEvent event) {

+						 handleContentOutlineSelection(event.getSelection());

+					 }

+				 });

+		}

+

+		return contentOutlinePage;

+	}

+

+	/**

+	 * This accesses a cached version of the property sheet.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public IPropertySheetPage getPropertySheetPage() {

+		if (propertySheetPage == null) {

+			propertySheetPage =

+				new ExtendedPropertySheetPage(editingDomain) {

+					@Override

+					public void setSelectionToViewer(List<?> selection) {

+						ComrelEditor.this.setSelectionToViewer(selection);

+						ComrelEditor.this.setFocus();

+					}

+

+					@Override

+					public void setActionBars(IActionBars actionBars) {

+						super.setActionBars(actionBars);

+						getActionBarContributor().shareGlobalActions(this, actionBars);

+					}

+				};

+			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));

+		}

+

+		return propertySheetPage;

+	}

+

+	/**

+	 * This deals with how we want selection in the outliner to affect the other views.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void handleContentOutlineSelection(ISelection selection) {

+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {

+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();

+			if (selectedElements.hasNext()) {

+				// Get the first selected element.

+				//

+				Object selectedElement = selectedElements.next();

+

+				// If it's the selection viewer, then we want it to select the same selection as this selection.

+				//

+				if (currentViewerPane.getViewer() == selectionViewer) {

+					ArrayList<Object> selectionList = new ArrayList<Object>();

+					selectionList.add(selectedElement);

+					while (selectedElements.hasNext()) {

+						selectionList.add(selectedElements.next());

+					}

+

+					// Set the selection to the widget.

+					//

+					selectionViewer.setSelection(new StructuredSelection(selectionList));

+				}

+				else {

+					// Set the input to the widget.

+					//

+					if (currentViewerPane.getViewer().getInput() != selectedElement) {

+						currentViewerPane.getViewer().setInput(selectedElement);

+						currentViewerPane.setTitle(selectedElement);

+					}

+				}

+			}

+		}

+	}

+

+	/**

+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean isDirty() {

+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();

+	}

+

+	/**

+	 * This is for implementing {@link IEditorPart} and simply saves the model file.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void doSave(IProgressMonitor progressMonitor) {

+		// Save only resources that have actually changed.

+		//

+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();

+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);

+

+		// Do the work within an operation because this is a long running activity that modifies the workbench.

+		//

+		WorkspaceModifyOperation operation =

+			new WorkspaceModifyOperation() {

+				// This is the method that gets invoked when the operation runs.

+				//

+				@Override

+				public void execute(IProgressMonitor monitor) {

+					// Save the resources to the file system.

+					//

+					boolean first = true;

+					for (Resource resource : editingDomain.getResourceSet().getResources()) {

+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {

+							try {

+								long timeStamp = resource.getTimeStamp();

+								resource.save(saveOptions);

+								if (resource.getTimeStamp() != timeStamp) {

+									savedResources.add(resource);

+								}

+							}

+							catch (Exception exception) {

+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));

+							}

+							first = false;

+						}

+					}

+				}

+			};

+

+		updateProblemIndication = false;

+		try {

+			// This runs the options, and shows progress.

+			//

+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);

+

+			// Refresh the necessary state.

+			//

+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();

+			firePropertyChange(IEditorPart.PROP_DIRTY);

+		}

+		catch (Exception exception) {

+			// Something went wrong that shouldn't.

+			//

+			ComrelEditorPlugin.INSTANCE.log(exception);

+		}

+		updateProblemIndication = true;

+		updateProblemIndication();

+	}

+

+	/**

+	 * This returns whether something has been persisted to the URI of the specified resource.

+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected boolean isPersisted(Resource resource) {

+		boolean result = false;

+		try {

+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());

+			if (stream != null) {

+				result = true;

+				stream.close();

+			}

+		}

+		catch (IOException e) {

+			// Ignore

+		}

+		return result;

+	}

+

+	/**

+	 * This always returns true because it is not currently supported.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean isSaveAsAllowed() {

+		return true;

+	}

+

+	/**

+	 * This also changes the editor's input.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void doSaveAs() {

+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());

+		saveAsDialog.open();

+		IPath path = saveAsDialog.getResult();

+		if (path != null) {

+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);

+			if (file != null) {

+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));

+			}

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void doSaveAs(URI uri, IEditorInput editorInput) {

+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);

+		setInputWithNotify(editorInput);

+		setPartName(editorInput.getName());

+		IProgressMonitor progressMonitor =

+			getActionBars().getStatusLineManager() != null ?

+				getActionBars().getStatusLineManager().getProgressMonitor() :

+				new NullProgressMonitor();

+		doSave(progressMonitor);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void gotoMarker(IMarker marker) {

+		try {

+			if (marker.getType().equals(EValidator.MARKER)) {

+				String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);

+				if (uriAttribute != null) {

+					URI uri = URI.createURI(uriAttribute);

+					EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);

+					if (eObject != null) {

+					  setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));

+					}

+				}

+			}

+		}

+		catch (CoreException exception) {

+			ComrelEditorPlugin.INSTANCE.log(exception);

+		}

+	}

+

+	/**

+	 * This is called during startup.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void init(IEditorSite site, IEditorInput editorInput) {

+		setSite(site);

+		setInputWithNotify(editorInput);

+		setPartName(editorInput.getName());

+		site.setSelectionProvider(this);

+		site.getPage().addPartListener(partListener);

+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void setFocus() {

+		if (currentViewerPane != null) {

+			currentViewerPane.setFocus();

+		}

+		else {

+			getControl(getActivePage()).setFocus();

+		}

+	}

+

+	/**

+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void addSelectionChangedListener(ISelectionChangedListener listener) {

+		selectionChangedListeners.add(listener);

+	}

+

+	/**

+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {

+		selectionChangedListeners.remove(listener);

+	}

+

+	/**

+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ISelection getSelection() {

+		return editorSelection;

+	}

+

+	/**

+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.

+	 * Calling this result will notify the listeners.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSelection(ISelection selection) {

+		editorSelection = selection;

+

+		for (ISelectionChangedListener listener : selectionChangedListeners) {

+			listener.selectionChanged(new SelectionChangedEvent(this, selection));

+		}

+		setStatusLineManager(selection);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setStatusLineManager(ISelection selection) {

+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?

+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();

+

+		if (statusLineManager != null) {

+			if (selection instanceof IStructuredSelection) {

+				Collection<?> collection = ((IStructuredSelection)selection).toList();

+				switch (collection.size()) {

+					case 0: {

+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));

+						break;

+					}

+					case 1: {

+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());

+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));

+						break;

+					}

+					default: {

+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));

+						break;

+					}

+				}

+			}

+			else {

+				statusLineManager.setMessage("");

+			}

+		}

+	}

+

+	/**

+	 * This looks up a string in the plugin's plugin.properties file.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static String getString(String key) {

+		return ComrelEditorPlugin.INSTANCE.getString(key);

+	}

+

+	/**

+	 * This looks up a string in plugin.properties, making a substitution.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static String getString(String key, Object s1) {

+		return ComrelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });

+	}

+

+	/**

+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void menuAboutToShow(IMenuManager menuManager) {

+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EditingDomainActionBarContributor getActionBarContributor() {

+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public IActionBars getActionBars() {

+		return getActionBarContributor().getActionBars();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public AdapterFactory getAdapterFactory() {

+		return adapterFactory;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void dispose() {

+		updateProblemIndication = false;

+

+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);

+

+		getSite().getPage().removePartListener(partListener);

+

+		adapterFactory.dispose();

+

+		if (getActionBarContributor().getActiveEditor() == this) {

+			getActionBarContributor().setActiveEditor(null);

+		}

+

+		if (propertySheetPage != null) {

+			propertySheetPage.dispose();

+		}

+

+		if (contentOutlinePage != null) {

+			contentOutlinePage.dispose();

+		}

+

+		super.dispose();

+	}

+

+	/**

+	 * Returns whether the outline view should be presented to the user.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected boolean showOutlineView() {

+		return true;

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelEditorPlugin.java b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelEditorPlugin.java
new file mode 100644
index 0000000..730ccb4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelEditorPlugin.java
@@ -0,0 +1,95 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.presentation;

+

+import org.eclipse.emf.common.EMFPlugin;

+

+import org.eclipse.emf.common.ui.EclipseUIPlugin;

+

+import org.eclipse.emf.common.util.ResourceLocator;

+

+/**

+ * This is the central singleton for the Comrel editor plugin.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public final class ComrelEditorPlugin extends EMFPlugin {

+	/**

+	 * Keep track of the singleton.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final ComrelEditorPlugin INSTANCE = new ComrelEditorPlugin();

+	

+	/**

+	 * Keep track of the singleton.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static Implementation plugin;

+

+	/**

+	 * Create the instance.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelEditorPlugin() {

+		super

+			(new ResourceLocator [] {

+			});

+	}

+

+	/**

+	 * Returns the singleton instance of the Eclipse plugin.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the singleton instance.

+	 * @generated

+	 */

+	@Override

+	public ResourceLocator getPluginResourceLocator() {

+		return plugin;

+	}

+	

+	/**

+	 * Returns the singleton instance of the Eclipse plugin.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the singleton instance.

+	 * @generated

+	 */

+	public static Implementation getPlugin() {

+		return plugin;

+	}

+	

+	/**

+	 * The actual implementation of the Eclipse <b>Plugin</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static class Implementation extends EclipseUIPlugin {

+		/**

+		 * Creates an instance.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public Implementation() {

+			super();

+	

+			// Remember the static instance.

+			//

+			plugin = this;

+		}

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelModelWizard.java b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelModelWizard.java
new file mode 100644
index 0000000..3de4790
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.editor/src/comrel/presentation/ComrelModelWizard.java
@@ -0,0 +1,632 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.presentation;

+

+

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.MissingResourceException;

+import java.util.StringTokenizer;

+

+import org.eclipse.emf.common.CommonPlugin;

+

+import org.eclipse.emf.common.util.URI;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EClassifier;

+

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+

+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;

+

+import org.eclipse.emf.ecore.EObject;

+

+import org.eclipse.emf.ecore.xmi.XMLResource;

+

+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;

+

+import org.eclipse.core.resources.IContainer;

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IFolder;

+import org.eclipse.core.resources.IProject;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.resources.ResourcesPlugin;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+

+import org.eclipse.jface.dialogs.MessageDialog;

+

+import org.eclipse.jface.viewers.IStructuredSelection;

+

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.jface.wizard.WizardPage;

+

+import org.eclipse.swt.SWT;

+

+import org.eclipse.swt.events.ModifyListener;

+import org.eclipse.swt.events.ModifyEvent;

+

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+

+import org.eclipse.swt.widgets.Combo;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Label;

+

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;

+

+import org.eclipse.ui.part.FileEditorInput;

+import org.eclipse.ui.part.ISetSelectionTarget;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.provider.ComrelEditPlugin;

+

+

+import org.eclipse.core.runtime.Path;

+

+import org.eclipse.jface.viewers.ISelection;

+import org.eclipse.jface.viewers.StructuredSelection;

+

+import org.eclipse.ui.IWorkbenchPage;

+import org.eclipse.ui.IWorkbenchPart;

+import org.eclipse.ui.IWorkbenchWindow;

+import org.eclipse.ui.PartInitException;

+

+

+/**

+ * This is a simple wizard for creating a new model file.

+ * <!-- begin-user-doc -->

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ComrelModelWizard extends Wizard implements INewWizard {

+	/**

+	 * The supported extensions for created files.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final List<String> FILE_EXTENSIONS =

+		Collections.unmodifiableList(Arrays.asList(ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelEditorFilenameExtensions").split("\\s*,\\s*")));

+

+	/**

+	 * A formatted list of supported file extensions, suitable for display.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final String FORMATTED_FILE_EXTENSIONS =

+		ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");

+

+	/**

+	 * This caches an instance of the model package.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ComrelPackage comrelPackage = ComrelPackage.eINSTANCE;

+

+	/**

+	 * This caches an instance of the model factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ComrelFactory comrelFactory = comrelPackage.getComrelFactory();

+

+	/**

+	 * This is the file creation page.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ComrelModelWizardNewFileCreationPage newFileCreationPage;

+

+	/**

+	 * This is the initial object creation page.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ComrelModelWizardInitialObjectCreationPage initialObjectCreationPage;

+

+	/**

+	 * Remember the selection during initialization for populating the default container.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IStructuredSelection selection;

+

+	/**

+	 * Remember the workbench during initialization.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected IWorkbench workbench;

+

+	/**

+	 * Caches the names of the types that can be created as the root object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected List<String> initialObjectNames;

+

+	/**

+	 * This just records the information.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void init(IWorkbench workbench, IStructuredSelection selection) {

+		this.workbench = workbench;

+		this.selection = selection;

+		setWindowTitle(ComrelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));

+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ComrelEditorPlugin.INSTANCE.getImage("full/wizban/NewComrel")));

+	}

+

+	/**

+	 * Returns the names of the types that can be created as the root object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected Collection<String> getInitialObjectNames() {

+		if (initialObjectNames == null) {

+			initialObjectNames = new ArrayList<String>();

+			for (EClassifier eClassifier : comrelPackage.getEClassifiers()) {

+				if (eClassifier instanceof EClass) {

+					EClass eClass = (EClass)eClassifier;

+					if (!eClass.isAbstract()) {

+						initialObjectNames.add(eClass.getName());

+					}

+				}

+			}

+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());

+		}

+		return initialObjectNames;

+	}

+

+	/**

+	 * Create a new model.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected EObject createInitialModel() {

+		EClass eClass = (EClass)comrelPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());

+		EObject rootObject = comrelFactory.create(eClass);

+		return rootObject;

+	}

+

+	/**

+	 * Do the work after everything is specified.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean performFinish() {

+		try {

+			// Remember the file.

+			//

+			final IFile modelFile = getModelFile();

+

+			// Do the work within an operation.

+			//

+			WorkspaceModifyOperation operation =

+				new WorkspaceModifyOperation() {

+					@Override

+					protected void execute(IProgressMonitor progressMonitor) {

+						try {

+							// Create a resource set

+							//

+							ResourceSet resourceSet = new ResourceSetImpl();

+

+							// Get the URI of the model file.

+							//

+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);

+

+							// Create a resource for this file.

+							//

+							Resource resource = resourceSet.createResource(fileURI);

+

+							// Add the initial model object to the contents.

+							//

+							EObject rootObject = createInitialModel();

+							if (rootObject != null) {

+								resource.getContents().add(rootObject);

+							}

+

+							// Save the contents of the resource to the file system.

+							//

+							Map<Object, Object> options = new HashMap<Object, Object>();

+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());

+							resource.save(options);

+						}

+						catch (Exception exception) {

+							ComrelEditorPlugin.INSTANCE.log(exception);

+						}

+						finally {

+							progressMonitor.done();

+						}

+					}

+				};

+

+			getContainer().run(false, false, operation);

+

+			// Select the new file resource in the current view.

+			//

+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();

+			IWorkbenchPage page = workbenchWindow.getActivePage();

+			final IWorkbenchPart activePart = page.getActivePart();

+			if (activePart instanceof ISetSelectionTarget) {

+				final ISelection targetSelection = new StructuredSelection(modelFile);

+				getShell().getDisplay().asyncExec

+					(new Runnable() {

+						 public void run() {

+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);

+						 }

+					 });

+			}

+

+			// Open an editor on the new file.

+			//

+			try {

+				page.openEditor

+					(new FileEditorInput(modelFile),

+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 

+			}

+			catch (PartInitException exception) {

+				MessageDialog.openError(workbenchWindow.getShell(), ComrelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());

+				return false;

+			}

+

+			return true;

+		}

+		catch (Exception exception) {

+			ComrelEditorPlugin.INSTANCE.log(exception);

+			return false;

+		}

+	}

+

+	/**

+	 * This is the one page of the wizard.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public class ComrelModelWizardNewFileCreationPage extends WizardNewFileCreationPage {

+		/**

+		 * Pass in the selection.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public ComrelModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {

+			super(pageId, selection);

+		}

+

+		/**

+		 * The framework calls this to see if the file is correct.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		@Override

+		protected boolean validatePage() {

+			if (super.validatePage()) {

+				String extension = new Path(getFileName()).getFileExtension();

+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {

+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";

+					setErrorMessage(ComrelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));

+					return false;

+				}

+				return true;

+			}

+			return false;

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public IFile getModelFile() {

+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));

+		}

+	}

+

+	/**

+	 * This is the page where the type of object to create is selected.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public class ComrelModelWizardInitialObjectCreationPage extends WizardPage {

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		protected Combo initialObjectField;

+

+		/**

+		 * @generated

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 */

+		protected List<String> encodings;

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		protected Combo encodingField;

+

+		/**

+		 * Pass in the selection.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public ComrelModelWizardInitialObjectCreationPage(String pageId) {

+			super(pageId);

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public void createControl(Composite parent) {

+			Composite composite = new Composite(parent, SWT.NONE);

+			{

+				GridLayout layout = new GridLayout();

+				layout.numColumns = 1;

+				layout.verticalSpacing = 12;

+				composite.setLayout(layout);

+

+				GridData data = new GridData();

+				data.verticalAlignment = GridData.FILL;

+				data.grabExcessVerticalSpace = true;

+				data.horizontalAlignment = GridData.FILL;

+				composite.setLayoutData(data);

+			}

+

+			Label containerLabel = new Label(composite, SWT.LEFT);

+			{

+				containerLabel.setText(ComrelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));

+

+				GridData data = new GridData();

+				data.horizontalAlignment = GridData.FILL;

+				containerLabel.setLayoutData(data);

+			}

+

+			initialObjectField = new Combo(composite, SWT.BORDER);

+			{

+				GridData data = new GridData();

+				data.horizontalAlignment = GridData.FILL;

+				data.grabExcessHorizontalSpace = true;

+				initialObjectField.setLayoutData(data);

+			}

+

+			for (String objectName : getInitialObjectNames()) {

+				initialObjectField.add(getLabel(objectName));

+			}

+

+			if (initialObjectField.getItemCount() == 1) {

+				initialObjectField.select(0);

+			}

+			initialObjectField.addModifyListener(validator);

+

+			Label encodingLabel = new Label(composite, SWT.LEFT);

+			{

+				encodingLabel.setText(ComrelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));

+

+				GridData data = new GridData();

+				data.horizontalAlignment = GridData.FILL;

+				encodingLabel.setLayoutData(data);

+			}

+			encodingField = new Combo(composite, SWT.BORDER);

+			{

+				GridData data = new GridData();

+				data.horizontalAlignment = GridData.FILL;

+				data.grabExcessHorizontalSpace = true;

+				encodingField.setLayoutData(data);

+			}

+

+			for (String encoding : getEncodings()) {

+				encodingField.add(encoding);

+			}

+

+			encodingField.select(0);

+			encodingField.addModifyListener(validator);

+

+			setPageComplete(validatePage());

+			setControl(composite);

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		protected ModifyListener validator =

+			new ModifyListener() {

+				public void modifyText(ModifyEvent e) {

+					setPageComplete(validatePage());

+				}

+			};

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		protected boolean validatePage() {

+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		@Override

+		public void setVisible(boolean visible) {

+			super.setVisible(visible);

+			if (visible) {

+				if (initialObjectField.getItemCount() == 1) {

+					initialObjectField.clearSelection();

+					encodingField.setFocus();

+				}

+				else {

+					encodingField.clearSelection();

+					initialObjectField.setFocus();

+				}

+			}

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public String getInitialObjectName() {

+			String label = initialObjectField.getText();

+

+			for (String name : getInitialObjectNames()) {

+				if (getLabel(name).equals(label)) {

+					return name;

+				}

+			}

+			return null;

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		public String getEncoding() {

+			return encodingField.getText();

+		}

+

+		/**

+		 * Returns the label for the specified type name.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		protected String getLabel(String typeName) {

+			try {

+				return ComrelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");

+			}

+			catch(MissingResourceException mre) {

+				ComrelEditorPlugin.INSTANCE.log(mre);

+			}

+			return typeName;

+		}

+

+		/**

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		protected Collection<String> getEncodings() {

+			if (encodings == null) {

+				encodings = new ArrayList<String>();

+				for (StringTokenizer stringTokenizer = new StringTokenizer(ComrelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {

+					encodings.add(stringTokenizer.nextToken());

+				}

+			}

+			return encodings;

+		}

+	}

+

+	/**

+	 * The framework calls this to create the contents of the wizard.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+		@Override

+	public void addPages() {

+		// Create a page, set the title, and the initial model file name.

+		//

+		newFileCreationPage = new ComrelModelWizardNewFileCreationPage("Whatever", selection);

+		newFileCreationPage.setTitle(ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelModelWizard_label"));

+		newFileCreationPage.setDescription(ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelModelWizard_description"));

+		newFileCreationPage.setFileName(ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));

+		addPage(newFileCreationPage);

+

+		// Try and get the resource selection to determine a current directory for the file dialog.

+		//

+		if (selection != null && !selection.isEmpty()) {

+			// Get the resource...

+			//

+			Object selectedElement = selection.iterator().next();

+			if (selectedElement instanceof IResource) {

+				// Get the resource parent, if its a file.

+				//

+				IResource selectedResource = (IResource)selectedElement;

+				if (selectedResource.getType() == IResource.FILE) {

+					selectedResource = selectedResource.getParent();

+				}

+

+				// This gives us a directory...

+				//

+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {

+					// Set this for the container.

+					//

+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());

+

+					// Make up a unique new name here.

+					//

+					String defaultModelBaseFilename = ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelEditorFilenameDefaultBase");

+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);

+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;

+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {

+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;

+					}

+					newFileCreationPage.setFileName(modelFilename);

+				}

+			}

+		}

+		initialObjectCreationPage = new ComrelModelWizardInitialObjectCreationPage("Whatever2");

+		initialObjectCreationPage.setTitle(ComrelEditorPlugin.INSTANCE.getString("_UI_ComrelModelWizard_label"));

+		initialObjectCreationPage.setDescription(ComrelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));

+		addPage(initialObjectCreationPage);

+	}

+

+	/**

+	 * Get the file from the page.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public IFile getModelFile() {

+		return newFileCreationPage.getModelFile();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/.classpath b/org.eclipse.emf.refactor.comrel.generator/.classpath
new file mode 100644
index 0000000..8a8f166
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/.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-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.emf.refactor.comrel.generator/.project b/org.eclipse.emf.refactor.comrel.generator/.project
new file mode 100644
index 0000000..51a7c70
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.emf.refactor.comrel.generator</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/org.eclipse.emf.refactor.comrel.generator/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.emf.refactor.comrel.generator/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..dbb5e03
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Wed Sep 21 11:18:12 CEST 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.compliance=1.6

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.6

diff --git a/org.eclipse.emf.refactor.comrel.generator/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.comrel.generator/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..35456cc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: CoMReL Generator
+Bundle-SymbolicName: org.eclipse.emf.refactor.comrel.generator;singleton:=true
+Bundle-Version: 0.9.0
+Bundle-Activator: comrel.generator.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources;bundle-version="3.6.0",
+ org.eclipse.emf.ecore;bundle-version="2.6.1",
+ org.eclipse.emf.codegen;bundle-version="2.6.0",
+ org.eclipse.jdt.core;bundle-version="3.6.1",
+ org.eclipse.emf.refactor.comrel;bundle-version="0.8.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: org.eclipse.ui.actions
diff --git a/org.eclipse.emf.refactor.comrel.generator/bin/.gitignore b/org.eclipse.emf.refactor.comrel.generator/bin/.gitignore
new file mode 100644
index 0000000..508dbce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/bin/.gitignore
@@ -0,0 +1 @@
+/comrel
diff --git a/org.eclipse.emf.refactor.comrel.generator/build.properties b/org.eclipse.emf.refactor.comrel.generator/build.properties
new file mode 100644
index 0000000..34ed36b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/build.properties
@@ -0,0 +1,9 @@
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .,\

+               plugin.xml,\

+               icons/,\

+               src/,\

+               templates/,\

+               bin/

diff --git a/org.eclipse.emf.refactor.comrel.generator/icons/multifeature.jpg b/org.eclipse.emf.refactor.comrel.generator/icons/multifeature.jpg
new file mode 100644
index 0000000..0bb6e8f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/icons/multifeature.jpg
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.generator/icons/multifilter.jpg b/org.eclipse.emf.refactor.comrel.generator/icons/multifilter.jpg
new file mode 100644
index 0000000..e2d11d1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/icons/multifilter.jpg
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.generator/icons/refactoring.jpg b/org.eclipse.emf.refactor.comrel.generator/icons/refactoring.jpg
new file mode 100644
index 0000000..1f277ee
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/icons/refactoring.jpg
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.generator/icons/singlefeature.gif b/org.eclipse.emf.refactor.comrel.generator/icons/singlefeature.gif
new file mode 100644
index 0000000..81294ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/icons/singlefeature.gif
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.generator/icons/singlefilter.png b/org.eclipse.emf.refactor.comrel.generator/icons/singlefilter.png
new file mode 100644
index 0000000..a6fc3ad
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/icons/singlefilter.png
Binary files differ
diff --git a/org.eclipse.emf.refactor.comrel.generator/plugin.xml b/org.eclipse.emf.refactor.comrel.generator/plugin.xml
new file mode 100644
index 0000000..8af7dd0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/plugin.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.4"?>

+<plugin>

+   <extension

+         point="org.eclipse.ui.newWizards">

+      <category

+            id="comrel.generator.category"

+            name="CoMReL"

+            parentCategory="org.eclipse.emf.refactor.newwizards.category">

+      </category>

+      <wizard

+            category="org.eclipse.emf.refactor.newwizards.category/comrel.generator.category"

+            class="comrel.generator.helper.wizards.SingleFilterWizard"

+            icon="icons/singlefilter.png"

+            id="comrel.generator.wizard.singlefilter"

+            name="Single Filter">

+      </wizard>

+      <wizard

+            category="org.eclipse.emf.refactor.newwizards.category/comrel.generator.category"

+            class="comrel.generator.helper.wizards.MultiFilterWizard"

+            icon="icons/multifilter.jpg"

+            id="comrel.generator.wizard.multifilter"

+            name="Multi Filter">

+      </wizard>

+      <wizard

+            category="org.eclipse.emf.refactor.newwizards.category/comrel.generator.category"

+            class="comrel.generator.helper.wizards.SingleFeatureWizard"

+            icon="icons/singlefeature.gif"

+            id="comrel.generator.wizard.singlefeature"

+            name="Single Feature">

+      </wizard>

+      <wizard

+            category="org.eclipse.emf.refactor.newwizards.category/comrel.generator.category"

+            class="comrel.generator.helper.wizards.MultiFeatureWizard"

+            icon="icons/multifeature.jpg"

+            id="comrel.generator.wizard.multifeature"

+            name="Multi Feature">

+      </wizard>

+      <wizard

+            category="org.eclipse.emf.refactor.newwizards.category/comrel.generator.category"

+            class="comrel.generator.refactoring.wizards.RefactoringWizard"

+            icon="icons/refactoring.jpg"

+            id="comrel.generator.wizard.refactoring"

+            name="Refactoring (specified in CoMReL)">

+      </wizard>

+   </extension>

+

+</plugin>

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/Activator.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/Activator.java
new file mode 100644
index 0000000..d68e9d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/Activator.java
@@ -0,0 +1,50 @@
+package comrel.generator;

+

+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.emf.refactor.comrel.generator"; //$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/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/ExtensionPoint.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/ExtensionPoint.java
new file mode 100644
index 0000000..9ff7993
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/ExtensionPoint.java
@@ -0,0 +1,21 @@
+package comrel.generator.helper;

+

+public class ExtensionPoint {

+	

+	public static final String EXTENSION_POINT_TAG = "extension";

+	public static final String NAME = "name";

+	public static final String ID = "id";

+	public static final String NAMESPACEURI = "namespaceUri";

+	public static final String DESCRIPTION = "description";

+	public static final String CLASS = "class";

+	

+//	public static final String EXTENSION_POINT_MULTIFEATURE = "org.eclipse.emf.refactor.multifeature";

+//	public final static String MULTIFEATURE = "multifeature";

+//	public static final String EXTENSION_POINT_SINGLEFEATURE = "org.eclipse.emf.refactor.singlefeature";

+//	public final static String SINGLEFEATURE = "singlefeature";

+//	public static final String EXTENSION_POINT_MULTIFILTER = "org.eclipse.emf.refactor.multifilter";

+//	public final static String MULTIFILTER = "multifilter";

+//	public static final String EXTENSION_POINT_SINGLEFILTER = "org.eclipse.emf.refactor.singlefilter";

+//	public final static String SINGLEFILTER = "singlefilter";

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/HelperGenerator.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/HelperGenerator.java
new file mode 100644
index 0000000..1b79811
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/HelperGenerator.java
@@ -0,0 +1,210 @@
+package comrel.generator.helper;

+

+import java.io.ByteArrayInputStream;

+import java.io.FileInputStream;

+import java.io.FileOutputStream;

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.MalformedURLException;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.jar.Attributes;

+import java.util.jar.Manifest;

+

+import org.eclipse.core.resources.IContainer;

+import org.eclipse.core.resources.IFile;

+import org.eclipse.core.resources.IProject;

+import org.eclipse.core.resources.IResource;

+import org.eclipse.core.resources.IWorkspaceRoot;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.FileLocator;

+import org.eclipse.core.runtime.IPath;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.Path;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.core.runtime.SubProgressMonitor;

+import org.eclipse.emf.codegen.jet.JETEmitter;

+import org.eclipse.emf.codegen.jet.JETException;

+import org.eclipse.emf.codegen.util.CodeGenUtil;

+import org.eclipse.jdt.core.IClasspathEntry;

+import org.eclipse.jdt.core.JavaCore;

+import org.osgi.framework.Bundle;

+

+import comrel.generator.Activator;

+

+public class HelperGenerator {

+	

+	private final String JETEMITTERS = ".JETEmitters";

+	private final String JAVA = ".java";

+	private final String JAVAJET = ".javajet";

+	private final String COMRELMODEL = "comrel";

+	private final String REQUIREBUNDLE = "Require-Bundle";

+	private final String BUNDLESYMBOLICNAME = "Bundle-SymbolicName";

+	private final String BUNDLEVERSION = "Bundle-Version";

+	private final String SINGLETONTRUE = "singleton:=true";	

+	private final String TEMPLATES = "templates";

+	private final String PLUGINSPATH = Platform.getInstallLocation().getURL().getPath() + "plugins/";

+	

+	private HelperInfo helperInfo;

+	private String templateDirectory;

+	private JETEmitter jetEmitter;

+	private List<IClasspathEntry> classpathEntries; 

+	

+	

+	public HelperGenerator(HelperInfo helperInfo) {

+		this.helperInfo = helperInfo;

+		this.templateDirectory = this.setTemplateDirectory();

+		this.classpathEntries = new ArrayList<IClasspathEntry>();

+		this.setClassPathEntries();

+	}

+	

+	private void setClassPathEntries() {

+		Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);

+		String version = (String) bundle.getHeaders().get(BUNDLEVERSION);

+		classpathEntries.add(JavaCore.newLibraryEntry(new Path(PLUGINSPATH

+				+ Activator.PLUGIN_ID + "_" + version + ".jar"), null, null));

+	}

+	

+	private String setTemplateDirectory() {

+		String td = "";

+		final Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);

+		try {

+			td = FileLocator.toFileURL(bundle.getEntry(TEMPLATES)).getFile();

+		} catch (final IOException e) {

+			e.printStackTrace();

+		}

+		return td;

+	}

+	

+	public void run(IProgressMonitor monitor, String helperType, String helperExtensionPoint) {

+		deleteJetEmittersProject(monitor);

+		updatePluginXml(helperType, helperExtensionPoint);

+		updateDependencies();

+		setSingletonDirective();

+		generateJavaCode(monitor, helperType);

+		refreshProject(monitor);

+	}

+	

+	private void generateJavaCode(IProgressMonitor monitor, String helperType) {

+		String generatedCode = "";

+		try {

+			generatedCode = this.generateCode(monitor, helperType);

+			this.save(monitor, generatedCode, helperInfo.getClassName());

+		} catch (JETException e) {

+			e.printStackTrace();

+		} catch (CoreException e) {

+			e.printStackTrace();

+		}

+	}

+	

+	private IContainer findOrCreatePackage(IProgressMonitor progressMonitor) throws CoreException {

+		IPath outputPath = new Path(this.helperInfo.getProjectName() + "/src/" + this.helperInfo.getPackageName().replace('.', '/'));

+		System.out.println("outputpath: " + outputPath.toString());

+		IProgressMonitor subMonitor = new SubProgressMonitor(progressMonitor, 1);

+		IPath localLocation = null; 

+		IContainer container = CodeGenUtil.EclipseUtil.findOrCreateContainer(outputPath, true, localLocation, subMonitor);

+		return container;

+	}

+	

+	private void save(IProgressMonitor monitor, String content, String fileName) throws CoreException, JETException {

+		IContainer container = findOrCreatePackage(monitor);

+		if (container == null) {

+			throw new JETException

+				("Cound not find or create container for package " 

+								+ this.helperInfo.getPackageName() + " in " 

+								+ this.helperInfo.getProjectName());

+		}

+		IFile file = container.getFile(new Path(fileName + JAVA));

+		InputStream inputStream = new ByteArrayInputStream(content.getBytes());

+		if (!file.exists()) {

+			file.create(inputStream, false, monitor);

+		} else {

+			container.refreshLocal(1, monitor);

+			file.setContents(inputStream, true, false, monitor);

+		}

+	}

+	

+	private String generateCode(IProgressMonitor monitor, String template) {

+		String templatePath = this.templateDirectory + template + JAVAJET;

+		ClassLoader classLoader = getClass().getClassLoader();

+		this.jetEmitter = new JETEmitter(templatePath, classLoader);

+		this.jetEmitter.getClasspathEntries().addAll(classpathEntries);

+		String result = "";

+		IProgressMonitor sub = new SubProgressMonitor(monitor, 1);

+		try {

+			result = jetEmitter.generate(sub, new Object[] { this.helperInfo });

+		} catch (JETException e) {

+			e.printStackTrace();

+		}

+		return result;

+	}

+

+	private void updatePluginXml(String helperType, String helperExtensionPoint) {

+		XMLPluginFile.createHelperEntry(helperInfo, helperType, helperExtensionPoint);

+	}

+

+	private void setSingletonDirective() {

+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(this.helperInfo.getProjectName());

+		try {

+			String fileName = project.getLocation().append("/META-INF/MANIFEST.MF").toOSString();

+			FileInputStream is = new FileInputStream(fileName);

+			Manifest mf = new Manifest(is);

+			Attributes att = mf.getMainAttributes();

+			String value = att.getValue(BUNDLESYMBOLICNAME);

+			if (! value.contains(SINGLETONTRUE))

+				value = value + ";" +  SINGLETONTRUE;

+			att.putValue(BUNDLESYMBOLICNAME, value);

+			FileOutputStream out = new FileOutputStream(fileName);  

+			mf.write(out);

+		} catch (MalformedURLException e) {

+			e.printStackTrace();

+		}  catch (IOException e) {

+			e.printStackTrace();

+		}

+	}

+

+	private void refreshProject(IProgressMonitor monitor) {

+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(this.helperInfo.getProjectName());

+		try {

+			project.refreshLocal(IResource.DEPTH_INFINITE, monitor);

+		} catch (CoreException e) {

+			e.printStackTrace();

+		}

+	}

+

+	private void updateDependencies() {

+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(this.helperInfo.getProjectName());

+		try {

+			String fileName = project.getLocation().append("/META-INF/MANIFEST.MF").toOSString();

+			FileInputStream is = new FileInputStream(fileName);

+			Manifest mf = new Manifest(is);

+			Attributes att = mf.getMainAttributes();

+			String value = att.getValue(REQUIREBUNDLE);

+			if (! value.contains(COMRELMODEL)) 

+				value = value + "," +  COMRELMODEL;

+			if (! value.contains(this.helperInfo.getJarFile()))

+				value = value + "," +  this.helperInfo.getJarFile();

+			att.putValue(REQUIREBUNDLE, value);

+			FileOutputStream out = new FileOutputStream(fileName);  

+			mf.write(out); 

+		} catch (MalformedURLException e) {

+			e.printStackTrace();

+		}  catch (IOException e) {

+			e.printStackTrace();

+		}

+	}

+

+	private void deleteJetEmittersProject(IProgressMonitor monitor) {

+		try {

+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

+			IResource r = root.findMember(JETEMITTERS);

+			if (r != null){

+				r.delete(false, monitor);

+			}

+		} 

+		catch (CoreException e) { } 

+		catch (Exception e) { }

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/HelperInfo.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/HelperInfo.java
new file mode 100644
index 0000000..25873a6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/HelperInfo.java
@@ -0,0 +1,117 @@
+package comrel.generator.helper;

+

+public class HelperInfo {

+	

+	private String name;

+	private String description;

+	private String id;

+	private String namespaceUri;

+	private String className;

+	private String packageName = "comrel.helper";

+	private String jarFile;

+	private String inputType;

+	private String outputType;

+	private String projectName;	

+	

+	public HelperInfo(

+			String name, 

+			String description, 

+			String id,

+			String namespaceUri, 

+			String className,

+			String jarFile, 

+			String inputType, 

+			String outputType,

+			String projectName) {

+		super();

+		this.name = name;

+		this.description = description;

+		this.id = id;

+		this.namespaceUri = namespaceUri;

+		this.className = className;

+		this.jarFile = jarFile;

+		this.inputType = inputType;

+		this.outputType = outputType;

+		this.projectName = projectName;

+	}

+

+	public String getName() {

+		return name;

+	}

+	

+	public String getDescription() {

+		return description;

+	}

+	

+	public String getId() {

+		return id;

+	}

+	

+	public String getNamespaceUri() {

+		return namespaceUri;

+	}

+	

+	public String getClassName() {

+		return className;

+	}

+	

+	public String getPackageName() {

+		return packageName;

+	}

+	

+	public String getQualifiedClassName() {

+		return (packageName + "." + className);

+	}

+	

+	public String getJarFile() {

+		return jarFile;

+	}

+	

+	public String getInputType() {

+		return inputType;

+	}

+	

+	public String getInputTypeVariable() {

+		int pos = inputType.lastIndexOf(".");

+		String cl = inputType.substring(pos+1);

+		String ret = cl.substring(0,1).toLowerCase();

+		if (cl.length() > 1) {

+			String rest = cl.substring(1);

+			ret = ret + rest;

+		}

+		ret = ret + "_";

+		return ret;

+	}

+	

+	public String getOutputType() {

+		return outputType;

+	}

+	

+	public String getOutputTypeVariable() {

+		int pos = outputType.lastIndexOf(".");

+		String cl = outputType.substring(pos+1);

+		String ret = cl.substring(0,1).toLowerCase();

+		if (cl.length() > 1) {

+			String rest = cl.substring(1);

+			ret = ret + rest;

+		}

+		ret = ret + "_";

+		return ret;

+	}

+	

+	public String getProjectName() {

+		return projectName;

+	}

+

+	@Override

+	public String toString() {

+		return "HelperInfo [\n name=" + name + ", \n description=" + description

+				+ ", \n id=" + id + ", \n namespaceUri=" + namespaceUri

+				+ ", \n className=" + className + ", \n packageName=" + packageName

+				+ ", \n jarFile=" + jarFile + ", \n inputType=" + inputType

+				+ ", \n outputType=" + outputType + ", \n projectName=" + projectName

+				+ ", \n qualifiedClassName=" + getQualifiedClassName() + "]";

+	}

+	

+	

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/XMLFile.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/XMLFile.java
new file mode 100644
index 0000000..a6f590e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/XMLFile.java
@@ -0,0 +1,34 @@
+package comrel.generator.helper;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.transform.OutputKeys;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerConfigurationException;

+import javax.xml.transform.TransformerFactory;

+

+public class XMLFile {

+	

+	protected static Transformer createTransformer(){

+		final TransformerFactory transformerFactory = TransformerFactory.newInstance();

+		try {

+			Transformer transformer = transformerFactory.newTransformer();

+			transformer.setOutputProperty(OutputKeys.INDENT,"yes");

+			return transformer;

+		} catch (final TransformerConfigurationException e) {

+			e.printStackTrace();

+			return null;

+		}		

+	}

+		

+	protected  static DocumentBuilder createDocumentBuilder() {

+		try {

+			return DocumentBuilderFactory.newInstance().newDocumentBuilder();

+		} catch (final ParserConfigurationException e) {

+			e.printStackTrace();

+			return null;

+		}

+	}

+	

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/XMLPluginFile.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/XMLPluginFile.java
new file mode 100644
index 0000000..086ea4b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/XMLPluginFile.java
@@ -0,0 +1,91 @@
+package comrel.generator.helper;

+import java.io.File;

+import java.io.IOException;

+

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.stream.StreamResult;

+

+import org.eclipse.core.resources.IProject;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.w3c.dom.Document;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+import org.xml.sax.SAXException;

+

+

+public class XMLPluginFile extends XMLFile {

+	

+	public static final String PLUGIN_FILE = "/plugin.xml";

+	public static final String PLUGIN_TAG = "plugin";

+	public static final String EXTENSION_TAG = "extension";

+	public static final String POINT_ATTR_TAG = "point";

+	

+	public static void createHelperEntry(HelperInfo helperInfo, String helperType, String helperExtensionPoint) {

+		final DocumentBuilder builder = createDocumentBuilder();

+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(helperInfo.getProjectName());

+		final String path = project.getLocation().toString() + PLUGIN_FILE;

+		Document doc = null;

+		final File file = new File(path);

+		if (!file.exists())

+			createPluginXml(helperInfo.getProjectName());

+		if (builder != null) {

+			Element root;

+			try {

+				doc = builder.parse(path);

+			} catch (final SAXException e) {

+				e.printStackTrace();

+			} catch (final IOException e) {

+				e.printStackTrace();

+			}

+			if (doc != null) {

+				root = doc.getDocumentElement();

+				Element ep = doc.createElement(EXTENSION_TAG);

+				ep.setAttribute(POINT_ATTR_TAG, helperExtensionPoint);

+				Node newEntry = createElement(helperInfo, doc, helperType);

+				ep.appendChild(newEntry);

+				root.appendChild(ep);

+			}

+		}

+		final Transformer transformer = createTransformer();

+		final DOMSource source = new DOMSource(doc);

+		final StreamResult result = new StreamResult(path);

+		try {

+			transformer.transform(source, result);

+		} catch (final TransformerException e) {

+			e.printStackTrace();

+		}

+	}

+	

+	public static void createPluginXml(String projectName) {

+		final DocumentBuilder builder = createDocumentBuilder();

+		if (null != builder){

+			final Document doc = builder.newDocument();			

+			final Element root = doc.createElement(PLUGIN_TAG);

+			doc.appendChild(root);

+			final Transformer transformer = createTransformer();

+			final DOMSource source = new DOMSource(doc);

+			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);

+			java.net.URI uri = project.getLocationURI();

+			StreamResult result = new StreamResult(uri + PLUGIN_FILE);			

+			try {

+				transformer.transform(source, result);

+			} catch (final TransformerException e) {

+				e.printStackTrace();

+			}			

+		}

+	}

+	

+	private static Element createElement(HelperInfo helperInfo, Document doc, String helperType) {

+		final Element multifeature = doc.createElement(helperType);

+		multifeature.setAttribute(ExtensionPoint.NAME, helperInfo.getName());

+		multifeature.setAttribute(ExtensionPoint.ID, helperInfo.getId());

+		multifeature.setAttribute(ExtensionPoint.DESCRIPTION, helperInfo.getDescription());

+		multifeature.setAttribute(ExtensionPoint.NAMESPACEURI, helperInfo.getNamespaceUri());

+		multifeature.setAttribute(ExtensionPoint.CLASS, helperInfo.getQualifiedClassName());

+		return multifeature;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/BasicsWizardPage.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/BasicsWizardPage.java
new file mode 100644
index 0000000..516311c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/BasicsWizardPage.java
@@ -0,0 +1,100 @@
+package comrel.generator.helper.wizards;

+

+import org.eclipse.jface.wizard.WizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Listener;

+import org.eclipse.swt.widgets.Text;

+

+public class BasicsWizardPage extends WizardPage implements Listener {

+	private Text txtName;

+	private Text txtDescription;

+	private String helperName = "";

+	private String helperDescription = "";

+

+	/**

+	 * Create the wizard.

+	 */

+	public BasicsWizardPage() {

+		super("HelperBasicsWizardPage");

+		setTitle("Basic Helper data");

+		setDescription("Please insert name and description of the new refactoring helper.");

+	}

+

+	/**

+	 * Create contents of the wizard.

+	 * @param parent

+	 */

+	public void createControl(Composite parent) {

+		Composite container = new Composite(parent, SWT.NULL);

+

+		setControl(container);

+		container.setLayout(new GridLayout(1, false));

+		

+		Label lblPleaseInsertA = new Label(container, SWT.NONE);

+		lblPleaseInsertA.setText("Name of the Helper* (must start with an upper case letter):");

+		

+		txtName = new Text(container, SWT.BORDER);

+		GridData gd_txtName = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);

+		gd_txtName.widthHint = 600;

+		txtName.setLayoutData(gd_txtName);

+		txtName.addListener(SWT.Modify, this);

+		txtName.setFocus();

+		

+		Label lblNewLabel = new Label(container, SWT.NONE);

+		lblNewLabel.setText("Description of its intended purpose:");

+		

+		txtDescription = new Text(container, SWT.BORDER | SWT.V_SCROLL);

+		GridData gd_txtDescription = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);

+		gd_txtDescription.heightHint = 195;

+		gd_txtDescription.widthHint = 600;

+		txtDescription.setLayoutData(gd_txtDescription);

+		txtDescription.addListener(SWT.Modify, this);

+		

+		this.setPageComplete(false);

+	}

+

+	@Override

+	public void handleEvent(Event event) {

+		if (event.widget == txtName) {

+			helperName = txtName.getText();

+			updatePageComplete();

+		}

+		if (event.widget == txtDescription) {

+			helperDescription = txtDescription.getText();

+		}

+	}

+

+	private void updatePageComplete() {

+		if (helperName.isEmpty()) {

+			this.setMessage("The name of the helper is not specified.", ERROR);

+			this.setPageComplete(false);

+		} else {

+			char c = helperName.charAt(0);

+			if (Character.isLetter(c) && Character.isUpperCase(c)) {

+				this.setMessage("Please insert name and description of the new refactoring helper.");

+				this.setPageComplete(true);

+			} else {

+				this.setMessage("The name of the helper must begin with an upper case letter.", ERROR);

+				this.setPageComplete(false);

+			}

+		}

+	}

+

+	public String getHelperName() {

+		return helperName;

+	}

+

+	public String getClassName() {

+		return helperName.replaceAll(" ", "");

+	}

+

+	public String getHelperDescription() {

+		return helperDescription;

+	}

+	

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/EclipseWizardPage.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/EclipseWizardPage.java
new file mode 100644
index 0000000..654cadb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/EclipseWizardPage.java
@@ -0,0 +1,157 @@
+package comrel.generator.helper.wizards;

+

+import java.util.LinkedList;

+

+import org.eclipse.core.resources.IProject;

+import org.eclipse.core.resources.IProjectNature;

+import org.eclipse.core.resources.ResourcesPlugin;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.jface.wizard.WizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Combo;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Listener;

+import org.eclipse.swt.widgets.Text;

+

+public class EclipseWizardPage extends WizardPage implements Listener {

+	

+	private Text txtId;

+	private Combo comboProject;

+	

+	private LinkedList<IProject> projects;

+	private final String PLUGINNATURE = "org.eclipse.pde.PluginNature";

+	private String[] projectNames;

+	

+	private String id = "";

+	private IProject project;

+

+	/**

+	 * Create the wizard.

+	 */

+	public EclipseWizardPage() {

+		super("EclipseWizardPage");

+		setTitle("Eclipse Specifics");

+		setDescription("Please insert a unique id and select a plug-in project.");

+		initProjects();

+	}

+

+	/**

+	 * Create contents of the wizard.

+	 * @param parent

+	 */

+	public void createControl(Composite parent) {

+		Composite container = new Composite(parent, SWT.NULL);

+

+		setControl(container);

+		container.setLayout(new GridLayout(2, false));

+		

+		Label lblUniqueHelperId = new Label(container, SWT.NONE);

+		lblUniqueHelperId.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

+		lblUniqueHelperId.setText("Unique helper id:");

+		

+		txtId = new Text(container, SWT.BORDER);

+		txtId.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

+		txtId.setFocus();

+		txtId.addListener(SWT.Modify, this);

+		

+		Label lblEclipsePluginProject = new Label(container, SWT.NONE);

+		lblEclipsePluginProject.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

+		lblEclipsePluginProject.setText("Eclipse plug-in project:");

+		

+		comboProject = new Combo(container, SWT.NONE);

+		comboProject.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

+		comboProject.addListener(SWT.Modify, this);

+		

+		setProjectCombo();

+		

+		this.setPageComplete(false);

+	}

+	

+	private void setProjectCombo() {

+		projectNames = new String[projects.size()];

+		for (int i = 0; i < projectNames.length; i++) {

+			projectNames[i] = projects.get(i).getName();

+		}

+		comboProject.setItems(projectNames);

+	}

+

+	private void initProjects() {

+		this.projects = new LinkedList<IProject>();

+		IProject[] allProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();

+		for (IProject project : allProjects) {

+			if (project.isOpen()) {

+				IProjectNature nature = null;

+				try {

+					nature = project.getNature(PLUGINNATURE);

+				} catch (CoreException e) {

+					e.printStackTrace();

+				}

+				if (null != nature) 

+					this.projects.add(project);

+			}

+		}

+	}

+

+	@Override

+	public void handleEvent(Event event) {

+		if (event.widget == txtId) {

+			id = txtId.getText();

+		}

+		if (event.widget == comboProject) {

+			setProject(comboProject.getSelectionIndex());

+		}

+		updatePageComplete();

+	}

+

+	private void setProject(int index) {

+		if (index == -1) {

+			project = null;

+		} else {

+			project = projects.get(index);

+		}

+	}

+

+	public void updatePageComplete() {

+		if (id.isEmpty()) {

+			this.setMessage("The id of the helper is not specified.", ERROR);

+			this.setPageComplete(false);

+		} else {

+			char firstChar = id.charAt(0);

+			char lastChar = id.charAt(id.length() - 1);

+			if ((firstChar == '.') || (lastChar == '.')) {

+				this.setMessage("The helper id must not start or end with a dot ('.')", ERROR);

+				this.setPageComplete(false);

+			} else {

+				for (int i = 0; i < id.length(); i++) {

+					char c = id.charAt(i);

+					if (Character.isLetter(c) || (c == '.')) {

+						if (project == null) {

+							this.setMessage("Please select a plug-in project.", ERROR);

+							this.setPageComplete(false);

+						} else {

+							this.setMessage("Please insert a unique id and select a plug-in project.");

+							this.setPageComplete(true);

+						}

+					} else {

+						this.setMessage("The helper id must consist of characters and/or dots ('.')", ERROR);

+						this.setPageComplete(false);

+						break;

+					}

+				}

+			}

+		}

+	}

+

+	public String getId() {

+		return id;

+	}

+

+	public String getProjectName() {

+		return project.getName();

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MetaModelWizardPage.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MetaModelWizardPage.java
new file mode 100644
index 0000000..80a071d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MetaModelWizardPage.java
@@ -0,0 +1,250 @@
+package comrel.generator.helper.wizards;

+

+import java.util.Arrays;

+

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.TreeIterator;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EPackage;

+import org.eclipse.jface.wizard.WizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Combo;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Event;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Listener;

+import org.eclipse.emf.ecore.plugin.RegistryReader;

+

+public class MetaModelWizardPage extends WizardPage implements Listener {

+	

+	private Combo comboMM, comboInput, comboOutput;

+	

+	private String[] metaModels;

+	private EPackage metaModel;

+	private String[] modelElementNames;

+	private EClass inputPortType;

+	private Object outputPortType;

+	

+	private boolean isFilter;

+

+	/**

+	 * Create the wizard.

+	 */

+	public MetaModelWizardPage(boolean isFilter) {

+		super("HelperMetaModelWizardPage");

+		setTitle("Meta model Data");

+		setDescription("Please select a meta model and corresponding port type(s).");

+		this.isFilter = isFilter;

+		initMetaModels();

+	}

+	

+	private void setComboMM() {

+		comboMM.setItems(metaModels);

+	}

+

+	private void initMetaModels() {

+		metaModels = EPackage.Registry.INSTANCE.keySet().toArray(new String[EPackage.Registry.INSTANCE.size()]);

+		Arrays.sort(metaModels);

+	}

+

+	/**

+	 * Create contents of the wizard.

+	 * @param parent

+	 */

+	public void createControl(Composite parent) {

+		Composite container = new Composite(parent, SWT.NULL);

+

+		setControl(container);

+		container.setLayout(new GridLayout(1, false));

+		

+		Composite composite = new Composite(container, SWT.NONE);

+		composite.setLayout(new GridLayout(2, false));

+		

+		Label lblMetaModelThe = new Label(composite, SWT.NONE);

+		GridData gd_lblMetaModelThe = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);

+		gd_lblMetaModelThe.widthHint = 270;

+		lblMetaModelThe.setLayoutData(gd_lblMetaModelThe);

+		lblMetaModelThe.setText("Meta model the Helper conforms to:");

+		

+		comboMM = new Combo(composite, SWT.NONE);

+		GridData gd_comboMM = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);

+		gd_comboMM.widthHint = 330;

+		comboMM.setLayoutData(gd_comboMM);

+		

+		Composite composite_1 = new Composite(container, SWT.NONE);

+		composite_1.setLayout(new GridLayout(2, false));

+		

+		Label lblMetaModelType = new Label(composite_1, SWT.NONE);

+		GridData gd_lblMetaModelType = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);

+		gd_lblMetaModelType.widthHint = 270;

+		lblMetaModelType.setLayoutData(gd_lblMetaModelType);

+		lblMetaModelType.setText("Meta model type of the input port:");

+		

+		comboInput = new Combo(composite_1, SWT.NONE);

+		comboInput.setEnabled(false);

+		GridData gd_comboInput = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);

+		gd_comboInput.widthHint = 330;

+		comboInput.setLayoutData(gd_comboInput);

+		

+		Composite composite_2 = new Composite(container, SWT.NONE);

+		composite_2.setLayout(new GridLayout(2, false));

+		

+		Label lblMetaModelType_1 = new Label(composite_2, SWT.NONE);

+		GridData gd_lblMetaModelType_1 = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);

+		gd_lblMetaModelType_1.widthHint = 270;

+		lblMetaModelType_1.setLayoutData(gd_lblMetaModelType_1);

+		lblMetaModelType_1.setText("Meta model type of the output port:");

+		

+		comboOutput = new Combo(composite_2, SWT.NONE);

+		comboOutput.setEnabled(false);

+		GridData gd_comboOutput = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);

+		gd_comboOutput.widthHint = 330;

+		comboOutput.setLayoutData(gd_comboOutput);

+		

+		setComboMM();

+		comboMM.setFocus();

+		comboMM.addListener(SWT.Modify, this);

+		comboInput.addListener(SWT.Modify, this);

+		comboOutput.addListener(SWT.Modify, this);

+		

+		this.setPageComplete(false);

+	}

+

+	@Override

+	public void handleEvent(Event event) {

+		if (event.widget == comboMM) {

+			setElementCombos(comboMM.getSelectionIndex());

+		}

+		if (event.widget == comboInput) {

+			setInputPortType(comboInput.getSelectionIndex());

+			if (isFilter) {

+				if (comboInput.getSelectionIndex() == -1) {

+					comboOutput.deselectAll();

+				} else {

+					comboOutput.select(comboInput.getSelectionIndex());

+				}

+				outputPortType = inputPortType;

+			}

+		}

+		if (event.widget == comboOutput) {

+			setOutputPortType(comboOutput.getSelectionIndex());

+		}

+		updatePageComplete();

+	}

+

+	private void setOutputPortType(int index) {

+		if (index == -1) {

+			outputPortType = null;

+		} else {	

+			String elementName = comboOutput.getItem(index);

+			if (elementName.equals("String")) {

+				outputPortType = elementName;

+			} else {

+				outputPortType = getEClassFromName(elementName);

+			}

+		}

+	}

+

+	private void setInputPortType(int index) {

+		if (index == -1) {

+			inputPortType = null;

+		} else {			

+			String elementName = comboInput.getItem(index);

+			inputPortType = getEClassFromName(elementName);

+		}

+	}

+

+	private EClass getEClassFromName(String elementName) {

+		TreeIterator<EObject> iter = metaModel.eAllContents();

+		while (iter.hasNext()) {

+			EObject eObject = iter.next();

+			if (eObject instanceof EClass) {

+				if (((EClass) eObject).getName().equals(elementName)) {

+					return ((EClass) eObject);

+				}

+			}

+		}

+		return null;

+	}

+

+	private void setElementCombos(int index) {

+		if (index == -1) {

+			comboInput.removeAll();

+			comboOutput.removeAll();

+			comboInput.setEnabled(false);

+			comboOutput.setEnabled(false);			

+		} else {

+			String mm = comboMM.getItem(index);

+			// new

+			Object value = EPackage.Registry.INSTANCE.get(mm);

+			System.out.println(value);

+			metaModel = (EPackage) value;

+			setModelElementNames();

+			comboInput.setItems(modelElementNames);

+			comboInput.setEnabled(true);

+			comboOutput.setItems(modelElementNames);

+			comboOutput.add("String");

+			comboOutput.setEnabled(! isFilter);

+		}

+	}

+

+	private void setModelElementNames() {

+		EList<EClass> eClasses = new BasicEList<EClass>();

+		TreeIterator<EObject> iter = metaModel.eAllContents();

+		while (iter.hasNext()) {

+			EObject eObject = iter.next();

+			if (eObject instanceof EClass) {

+				eClasses.add((EClass) eObject);

+			}

+		}

+		modelElementNames = new String[eClasses.size()];

+		for (int i = 0; i < modelElementNames.length; i++) {

+			modelElementNames[i] = eClasses.get(i).getName();

+		}

+		Arrays.sort(modelElementNames);

+	}

+	

+	public void updatePageComplete() {

+		if (comboMM.getSelectionIndex() == -1) {

+			this.setMessage("The meta model is not specified.", ERROR);

+			this.setPageComplete(false);

+			return;

+		} 

+		if (comboInput.isEnabled() && (comboInput.getSelectionIndex() == -1)) {

+			this.setMessage("The type of the input port is not specified.", ERROR);

+			this.setPageComplete(false);

+			return;

+		} 

+		if (comboOutput.isEnabled() && (comboOutput.getSelectionIndex() == -1)) {

+			this.setMessage("The type of the output port is not specified.", ERROR);

+			this.setPageComplete(false);

+			return;

+		}

+		this.setMessage("Please select a meta model and corresponding port type(s).");

+		this.setPageComplete(true);

+	}

+

+	public String getNamespaceUri() {

+		return metaModel.getNsURI();

+	}

+

+	public String getInputTypeName() {

+		return inputPortType.getInstanceClassName();

+	}

+

+	public String getOutputTypeName() {

+		if (outputPortType.equals("String")) {

+			return "String";

+		} else {

+			return ((EClass) outputPortType).getInstanceClassName();

+		}

+	}

+

+	public String getJarFileName() {

+		return inputPortType.getInstanceClass().getPackage().getName();

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MultiFeatureWizard.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MultiFeatureWizard.java
new file mode 100644
index 0000000..3897e45
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MultiFeatureWizard.java
@@ -0,0 +1,92 @@
+package comrel.generator.helper.wizards;

+

+import java.lang.reflect.InvocationTargetException;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+import comrel.generator.helper.HelperGenerator;

+import comrel.generator.helper.HelperInfo;

+import comrel.util.ExtensionPointInfo;

+

+public class MultiFeatureWizard extends Wizard implements INewWizard {

+

+private final String WINDOWTITLE = "New Multi Feature";

+	

+	private BasicsWizardPage basicsWizardPage;

+	private MetaModelWizardPage metaModelWizardPage;

+	private EclipseWizardPage eclipseWizardPage;

+

+	public MultiFeatureWizard() { }

+	

+	public void addPages() {

+		setWindowTitle(WINDOWTITLE);

+		basicsWizardPage = new BasicsWizardPage();

+		addPage(basicsWizardPage);

+		metaModelWizardPage = new MetaModelWizardPage(false);

+		addPage(metaModelWizardPage);

+		eclipseWizardPage = new EclipseWizardPage();

+		addPage(eclipseWizardPage);

+	}

+	

+	@Override

+	public boolean canFinish() {

+		return (basicsWizardPage.isPageComplete() 

+				&& metaModelWizardPage.isPageComplete()

+				&& eclipseWizardPage.isPageComplete());

+	}

+

+	@Override

+	public void init(IWorkbench workbench, IStructuredSelection selection) { }

+

+	@Override

+	public boolean performFinish() {

+		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {

+			@Override

+			public void execute(IProgressMonitor monitor)

+					throws InvocationTargetException {

+				try {				

+					createHelper(monitor);

+				} catch (Exception e){

+					e.printStackTrace();

+				} finally {

+					monitor.done();

+				}

+			}

+		};

+		try {

+			getContainer().run(false, false, op);

+		} catch (InvocationTargetException e) {

+			e.printStackTrace();

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+		return true;

+	}

+

+	protected void createHelper(IProgressMonitor monitor) {

+		HelperInfo helperInfo = createHelperInfo();

+		System.out.println(helperInfo.toString());

+		HelperGenerator generator = new HelperGenerator(helperInfo);

+		generator.run(monitor, ExtensionPointInfo.MULTIFEATURE, ExtensionPointInfo.MULTIFEATURE_EXTENSION_POINT);

+	}

+

+	private HelperInfo createHelperInfo() {

+		String name = basicsWizardPage.getHelperName();

+		String description = basicsWizardPage.getHelperDescription();

+		String id = eclipseWizardPage.getId();

+		String namespaceUri = metaModelWizardPage.getNamespaceUri();

+		String className = basicsWizardPage.getClassName();

+		String jarFile = metaModelWizardPage.getJarFileName();

+		String inputType = metaModelWizardPage.getInputTypeName();

+		String outputType = metaModelWizardPage.getOutputTypeName();

+		String projectName = eclipseWizardPage.getProjectName();

+		return new HelperInfo(name, description, id, namespaceUri, className, 

+								jarFile, inputType, outputType, projectName);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MultiFilterWizard.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MultiFilterWizard.java
new file mode 100644
index 0000000..307c2fb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/MultiFilterWizard.java
@@ -0,0 +1,93 @@
+package comrel.generator.helper.wizards;

+

+import java.lang.reflect.InvocationTargetException;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+import comrel.generator.helper.HelperGenerator;

+import comrel.generator.helper.HelperInfo;

+import comrel.util.ExtensionPointInfo;

+

+public class MultiFilterWizard extends Wizard implements INewWizard {

+

+private final String WINDOWTITLE = "New Multi Filter";

+	

+	private BasicsWizardPage basicsWizardPage;

+	private MetaModelWizardPage metaModelWizardPage;

+	private EclipseWizardPage eclipseWizardPage;

+

+

+	public MultiFilterWizard() { }

+	

+	public void addPages() {

+		setWindowTitle(WINDOWTITLE);

+		basicsWizardPage = new BasicsWizardPage();

+		addPage(basicsWizardPage);

+		metaModelWizardPage = new MetaModelWizardPage(true);

+		addPage(metaModelWizardPage);

+		eclipseWizardPage = new EclipseWizardPage();

+		addPage(eclipseWizardPage);

+	}

+	

+	@Override

+	public boolean canFinish() {

+		return (basicsWizardPage.isPageComplete() 

+				&& metaModelWizardPage.isPageComplete()

+				&& eclipseWizardPage.isPageComplete());

+	}

+

+	@Override

+	public void init(IWorkbench workbench, IStructuredSelection selection) { }

+

+	@Override

+	public boolean performFinish() {

+		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {

+			@Override

+			public void execute(IProgressMonitor monitor)

+					throws InvocationTargetException {

+				try {				

+					createHelper(monitor);

+				} catch (Exception e){

+					e.printStackTrace();

+				} finally {

+					monitor.done();

+				}

+			}

+		};

+		try {

+			getContainer().run(false, false, op);

+		} catch (InvocationTargetException e) {

+			e.printStackTrace();

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+		return true;

+	}

+

+	protected void createHelper(IProgressMonitor monitor) {

+		HelperInfo helperInfo = createHelperInfo();

+		System.out.println(helperInfo.toString());

+		HelperGenerator generator = new HelperGenerator(helperInfo);

+		generator.run(monitor, ExtensionPointInfo.MULTIFILTER, ExtensionPointInfo.MULTIFILTER_EXTENSION_POINT);

+	}

+

+	private HelperInfo createHelperInfo() {

+		String name = basicsWizardPage.getHelperName();

+		String description = basicsWizardPage.getHelperDescription();

+		String id = eclipseWizardPage.getId();

+		String namespaceUri = metaModelWizardPage.getNamespaceUri();

+		String className = basicsWizardPage.getClassName();

+		String jarFile = metaModelWizardPage.getJarFileName();

+		String inputType = metaModelWizardPage.getInputTypeName();

+		String outputType = metaModelWizardPage.getOutputTypeName();

+		String projectName = eclipseWizardPage.getProjectName();

+		return new HelperInfo(name, description, id, namespaceUri, className, 

+								jarFile, inputType, outputType, projectName);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/SingleFeatureWizard.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/SingleFeatureWizard.java
new file mode 100644
index 0000000..a96702b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/SingleFeatureWizard.java
@@ -0,0 +1,93 @@
+package comrel.generator.helper.wizards;

+

+import java.lang.reflect.InvocationTargetException;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+import comrel.generator.helper.HelperGenerator;

+import comrel.generator.helper.HelperInfo;

+import comrel.util.ExtensionPointInfo;

+

+public class SingleFeatureWizard extends Wizard implements INewWizard {

+

+private final String WINDOWTITLE = "New Single Feature";

+	

+	private BasicsWizardPage basicsWizardPage;

+	private MetaModelWizardPage metaModelWizardPage;

+	private EclipseWizardPage eclipseWizardPage;

+

+	public SingleFeatureWizard() { }

+	

+	public void addPages() {

+		setWindowTitle(WINDOWTITLE);

+		basicsWizardPage = new BasicsWizardPage();

+		addPage(basicsWizardPage);

+		metaModelWizardPage = new MetaModelWizardPage(false);

+		addPage(metaModelWizardPage);

+		eclipseWizardPage = new EclipseWizardPage();

+		addPage(eclipseWizardPage);

+	}

+	

+	@Override

+	public boolean canFinish() {

+		return (basicsWizardPage.isPageComplete() 

+				&& metaModelWizardPage.isPageComplete()

+				&& eclipseWizardPage.isPageComplete());

+	}

+

+	@Override

+	public boolean performFinish() {

+		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {

+			@Override

+			public void execute(IProgressMonitor monitor)

+					throws InvocationTargetException {

+				try {				

+					createHelper(monitor);

+				} catch (Exception e){

+					e.printStackTrace();

+				} finally {

+					monitor.done();

+				}

+			}

+		};

+		try {

+			getContainer().run(false, false, op);

+		} catch (InvocationTargetException e) {

+			e.printStackTrace();

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+		return true;

+	}

+

+	protected void createHelper(IProgressMonitor monitor) {

+		HelperInfo helperInfo = createHelperInfo();

+		System.out.println(helperInfo.toString());

+		HelperGenerator generator = new HelperGenerator(helperInfo);

+		generator.run(monitor, ExtensionPointInfo.SINGLEFEATURE, ExtensionPointInfo.SINGLEFEATURE_EXTENSION_POINT);

+	}

+

+	private HelperInfo createHelperInfo() {

+		String name = basicsWizardPage.getHelperName();

+		String description = basicsWizardPage.getHelperDescription();

+		String id = eclipseWizardPage.getId();

+		String namespaceUri = metaModelWizardPage.getNamespaceUri();

+		String className = basicsWizardPage.getClassName();

+		String jarFile = metaModelWizardPage.getJarFileName();

+		String inputType = metaModelWizardPage.getInputTypeName();

+		String outputType = metaModelWizardPage.getOutputTypeName();

+		String projectName = eclipseWizardPage.getProjectName();

+		return new HelperInfo(name, description, id, namespaceUri, className, 

+								jarFile, inputType, outputType, projectName);

+	}

+

+

+	@Override

+	public void init(IWorkbench workbench, IStructuredSelection selection) { }

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/SingleFilterWizard.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/SingleFilterWizard.java
new file mode 100644
index 0000000..784f4a7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/helper/wizards/SingleFilterWizard.java
@@ -0,0 +1,92 @@
+package comrel.generator.helper.wizards;

+

+import java.lang.reflect.InvocationTargetException;

+

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+import org.eclipse.ui.actions.WorkspaceModifyOperation;

+

+import comrel.generator.helper.HelperGenerator;

+import comrel.generator.helper.HelperInfo;

+import comrel.util.ExtensionPointInfo;

+

+public class SingleFilterWizard extends Wizard implements INewWizard {

+

+private final String WINDOWTITLE = "New Single Filter";

+	

+	private BasicsWizardPage basicsWizardPage;

+	private MetaModelWizardPage metaModelWizardPage;

+	private EclipseWizardPage eclipseWizardPage;

+

+	public SingleFilterWizard() { }

+	

+	public void addPages() {

+		setWindowTitle(WINDOWTITLE);

+		basicsWizardPage = new BasicsWizardPage();

+		addPage(basicsWizardPage);

+		metaModelWizardPage = new MetaModelWizardPage(true);

+		addPage(metaModelWizardPage);

+		eclipseWizardPage = new EclipseWizardPage();

+		addPage(eclipseWizardPage);

+	}

+	

+	@Override

+	public boolean canFinish() {

+		return (basicsWizardPage.isPageComplete() 

+				&& metaModelWizardPage.isPageComplete()

+				&& eclipseWizardPage.isPageComplete());

+	}

+

+	@Override

+	public void init(IWorkbench workbench, IStructuredSelection selection) { }

+

+	@Override

+	public boolean performFinish() {

+		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {

+			@Override

+			public void execute(IProgressMonitor monitor)

+					throws InvocationTargetException {

+				try {				

+					createHelper(monitor);

+				} catch (Exception e){

+					e.printStackTrace();

+				} finally {

+					monitor.done();

+				}

+			}

+		};

+		try {

+			getContainer().run(false, false, op);

+		} catch (InvocationTargetException e) {

+			e.printStackTrace();

+		} catch (InterruptedException e) {

+			e.printStackTrace();

+		}

+		return true;

+	}

+

+	protected void createHelper(IProgressMonitor monitor) {

+		HelperInfo helperInfo = createHelperInfo();

+		System.out.println(helperInfo.toString());

+		HelperGenerator generator = new HelperGenerator(helperInfo);

+		generator.run(monitor, ExtensionPointInfo.SINGLEFILTER, ExtensionPointInfo.SINGLEFILTER_EXTENSION_POINT);

+	}

+

+	private HelperInfo createHelperInfo() {

+		String name = basicsWizardPage.getHelperName();

+		String description = basicsWizardPage.getHelperDescription();

+		String id = eclipseWizardPage.getId();

+		String namespaceUri = metaModelWizardPage.getNamespaceUri();

+		String className = basicsWizardPage.getClassName();

+		String jarFile = metaModelWizardPage.getJarFileName();

+		String inputType = metaModelWizardPage.getInputTypeName();

+		String outputType = metaModelWizardPage.getOutputTypeName();

+		String projectName = eclipseWizardPage.getProjectName();

+		return new HelperInfo(name, description, id, namespaceUri, className, 

+								jarFile, inputType, outputType, projectName);

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/refactoring/wizards/RefactoringWizard.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/refactoring/wizards/RefactoringWizard.java
new file mode 100644
index 0000000..55db048
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/refactoring/wizards/RefactoringWizard.java
@@ -0,0 +1,26 @@
+package comrel.generator.refactoring.wizards;

+

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.ui.INewWizard;

+import org.eclipse.ui.IWorkbench;

+

+public class RefactoringWizard extends Wizard implements INewWizard {

+

+	public RefactoringWizard() {

+		// TODO Auto-generated constructor stub

+	}

+

+	@Override

+	public void init(IWorkbench workbench, IStructuredSelection selection) {

+		// TODO Auto-generated method stub

+

+	}

+

+	@Override

+	public boolean performFinish() {

+		// TODO Auto-generated method stub

+		return false;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/refactoring/wizards/RefactoringWizardPage.java b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/refactoring/wizards/RefactoringWizardPage.java
new file mode 100644
index 0000000..9bdb9ea
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/src/comrel/generator/refactoring/wizards/RefactoringWizardPage.java
@@ -0,0 +1,55 @@
+package comrel.generator.refactoring.wizards;

+

+import org.eclipse.jface.wizard.WizardPage;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Combo;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.widgets.Button;

+

+public class RefactoringWizardPage extends WizardPage {

+

+	/**

+	 * Create the wizard.

+	 */

+	public RefactoringWizardPage() {

+		super("wizardPage");

+		setTitle("Wizard Page title");

+		setDescription("Wizard Page description");

+	}

+

+	/**

+	 * Create contents of the wizard.

+	 * @param parent

+	 */

+	public void createControl(Composite parent) {

+		Composite container = new Composite(parent, SWT.NULL);

+

+		setControl(container);

+		container.setLayout(new GridLayout(3, false));

+		

+		Label lblEclipsePluginProject = new Label(container, SWT.NONE);

+		lblEclipsePluginProject.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

+		lblEclipsePluginProject.setText("Eclipse plug-in project:");

+		

+		Combo comboProject = new Combo(container, SWT.NONE);

+		comboProject.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

+		

+		Label lblNewLabel = new Label(container, SWT.NONE);

+		

+		Label lblComrelModelFile = new Label(container, SWT.NONE);

+		lblComrelModelFile.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

+		lblComrelModelFile.setText("CoMReL model file:");

+		

+		Combo comboFile = new Combo(container, SWT.NONE);

+		comboFile.setEnabled(false);

+		comboFile.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

+		

+		Button btnImport = new Button(container, SWT.NONE);

+		btnImport.setEnabled(false);

+		btnImport.setText("import");

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.generator/templates/multifeature.javajet b/org.eclipse.emf.refactor.comrel.generator/templates/multifeature.javajet
new file mode 100644
index 0000000..1df6abc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/templates/multifeature.javajet
@@ -0,0 +1,88 @@
+<%@ jet package="comrel.helper" class="MultiFeature"

+imports="comrel.generator.helper.*"%>

+<%HelperInfo helperInfo = (HelperInfo) argument; %>

+/**

+ * <copyright>

+ * </copyright>

+ */

+package <%=helperInfo.getPackageName()%>;

+

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+

+import comrel.extensions.IMultiFeatureHelper;

+import comrel.ComrelFactory;

+import comrel.SingleInputPort;

+import comrel.MultiOutputPort;

+

+/**

+ * Helper class for synchronizing ports in 

+ * composite model refactorings specified in CoMReL.

+ * @generated

+ */

+public class <%=helperInfo.getClassName()%> implements IMultiFeatureHelper {

+

+	final ComrelFactory factory = ComrelFactory.eINSTANCE;

+	private SingleInputPort <%=helperInfo.getInputTypeVariable()%>;

+	private MultiOutputPort <%=helperInfo.getOutputTypeVariable() + "s"%>;

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public <%=helperInfo.getClassName()%>() {

+		initInputPort();

+		initOutputPort();

+	}

+	

+	/**

+	 * Method for setting the input port.

+	 * @generated

+	 */

+	private void initInputPort() {

+		<%=helperInfo.getInputTypeVariable()%> = factory.createSingleInputPort();

+		<%=helperInfo.getInputTypeVariable()%>.setName("<%=helperInfo.getInputTypeVariable()%>");

+		<%=helperInfo.getInputTypeVariable()%>.setType(<%=helperInfo.getInputType()%>.class);

+	}

+	

+	/**

+	 * Method for setting the output port.

+	 * @generated

+	 */

+	private void initOutputPort(){

+		<%=helperInfo.getOutputTypeVariable() + "s"%> = factory.createMultiOutputPort();

+		<%=helperInfo.getOutputTypeVariable() + "s"%>.setName("<%=helperInfo.getOutputTypeVariable() + "s"%>");

+		<%=helperInfo.getOutputTypeVariable() + "s"%>.setType(<%=helperInfo.getOutputType()%>.class);

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public SingleInputPort getInputPort() {

+		return <%=helperInfo.getInputTypeVariable()%>;

+	}

+

+	/**

+	 * @generated

+	 */

+	@Override

+	public MultiOutputPort getOutputPort() {

+		return <%=helperInfo.getOutputTypeVariable() + "s"%>;

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public void run() {

+		<%=helperInfo.getInputType()%> in = (<%=helperInfo.getInputType()%>) <%=helperInfo.getInputTypeVariable()%>.getValue();

+		EList<<%=helperInfo.getOutputType()%>> out = new BasicEList<<%=helperInfo.getOutputType()%>>();

+		

+		// TODO implement logic (fill 'out')

+		

+		<%=helperInfo.getOutputTypeVariable() + "s"%>.getValue().addAll(out);

+	}

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.generator/templates/multifilter.javajet b/org.eclipse.emf.refactor.comrel.generator/templates/multifilter.javajet
new file mode 100644
index 0000000..6b73e71
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/templates/multifilter.javajet
@@ -0,0 +1,101 @@
+<%@ jet package="comrel.helper" class="MultiFilter"

+imports="comrel.generator.helper.*"%>

+<%HelperInfo helperInfo = (HelperInfo) argument; %>

+/**

+ * <copyright>

+ * </copyright>

+ */

+package <%=helperInfo.getPackageName()%>;

+

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+

+import comrel.extensions.IMultiFilterHelper;

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.ComrelFactory;

+

+/**

+ * Helper class for synchronizing ports in 

+ * composite model refactorings specified in CoMReL.

+ * @generated

+ */

+public class <%=helperInfo.getClassName()%> implements IMultiFilterHelper {

+

+	final ComrelFactory factory = ComrelFactory.eINSTANCE;

+	private MultiInputPort <%=helperInfo.getInputTypeVariable() + "in"%>;

+	private MultiOutputPort <%=helperInfo.getOutputTypeVariable() + "out"%>;

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public <%=helperInfo.getClassName()%>() {

+		initInputPort();

+		initOutputPort();

+	}

+	

+	/**

+	 * Method for setting the input port.

+	 * @generated

+	 */

+	private void initInputPort() {

+		<%=helperInfo.getInputTypeVariable() + "in"%> = factory.createMultiInputPort();

+		<%=helperInfo.getInputTypeVariable() + "in"%>.setName("<%=helperInfo.getInputTypeVariable() + "in"%>");

+		<%=helperInfo.getInputTypeVariable() + "in"%>.setType(<%=helperInfo.getInputType()%>.class);

+	}

+	

+	/**

+	 * Method for setting the output port.

+	 * @generated

+	 */

+	private void initOutputPort(){

+		<%=helperInfo.getOutputTypeVariable() + "out"%> = factory.createMultiOutputPort();

+		<%=helperInfo.getOutputTypeVariable() + "out"%>.setName("<%=helperInfo.getOutputTypeVariable() + "out"%>");

+		<%=helperInfo.getOutputTypeVariable() + "out"%>.setType(<%=helperInfo.getOutputType()%>.class);

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public MultiInputPort getInputPort() {

+		return <%=helperInfo.getInputTypeVariable() + "in"%>;

+	}

+

+	/**

+	 * @generated

+	 */

+	@Override

+	public MultiOutputPort getOutputPort() {

+		return <%=helperInfo.getOutputTypeVariable() + "out"%>;

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public void run() {

+		EList<<%=helperInfo.getInputType()%>> in = setInput();

+		EList<<%=helperInfo.getOutputType()%>> out = new BasicEList<<%=helperInfo.getOutputType()%>>();

+		

+		// TODO implement logic (fill 'out')

+		

+		<%=helperInfo.getOutputTypeVariable() + "out"%>.getValue().addAll(out);

+	}

+

+	/**

+	 * Helper method for extracting input to Java objects. 

+	 * @generated

+	 */

+	private EList<<%=helperInfo.getInputType()%>> setInput() {

+		EList<Object> origin = <%=helperInfo.getInputTypeVariable() + "in"%>.getValue();

+		EList<<%=helperInfo.getInputType()%>> in = new BasicEList<<%=helperInfo.getInputType()%>>();

+		for (Object o : origin) {

+			in.add((<%=helperInfo.getInputType()%>) o);

+		}

+		return in;

+	}

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.generator/templates/singlefeature.javajet b/org.eclipse.emf.refactor.comrel.generator/templates/singlefeature.javajet
new file mode 100644
index 0000000..e266d78
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/templates/singlefeature.javajet
@@ -0,0 +1,85 @@
+<%@ jet package="comrel.helper" class="SingleFeature"

+imports="comrel.generator.helper.*"%>

+<%HelperInfo helperInfo = (HelperInfo) argument; %>

+/**

+ * <copyright>

+ * </copyright>

+ */

+package <%=helperInfo.getPackageName()%>;

+

+import comrel.extensions.ISingleFeatureHelper;

+import comrel.ComrelFactory;

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+

+/**

+ * Helper class for synchronizing ports in 

+ * composite model refactorings specified in CoMReL.

+ * @generated

+ */

+public class <%=helperInfo.getClassName()%> implements ISingleFeatureHelper {

+

+	final ComrelFactory factory = ComrelFactory.eINSTANCE;

+	private SingleInputPort <%=helperInfo.getInputTypeVariable() + "in"%>;

+	private SingleOutputPort <%=helperInfo.getOutputTypeVariable() + "out"%>;

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public <%=helperInfo.getClassName()%>() {

+		initInputPort();

+		initOutputPort();

+	}

+	

+	/**

+	 * Method for setting the input port.

+	 * @generated

+	 */

+	private void initInputPort() {

+		<%=helperInfo.getInputTypeVariable() + "in"%> = factory.createSingleInputPort();

+		<%=helperInfo.getInputTypeVariable() + "in"%>.setName("<%=helperInfo.getInputTypeVariable() + "in"%>");

+		<%=helperInfo.getInputTypeVariable() + "in"%>.setType(<%=helperInfo.getInputType()%>.class);

+	}

+	

+	/**

+	 * Method for setting the output port.

+	 * @generated

+	 */

+	private void initOutputPort(){

+		<%=helperInfo.getOutputTypeVariable() + "out"%> = factory.createSingleOutputPort();

+		<%=helperInfo.getOutputTypeVariable() + "out"%>.setName("<%=helperInfo.getOutputTypeVariable() + "out"%>");

+		<%=helperInfo.getOutputTypeVariable() + "out"%>.setType(<%=helperInfo.getOutputType()%>.class);

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public SingleInputPort getInputPort() {

+		return <%=helperInfo.getInputTypeVariable() + "in"%>;

+	}

+

+	/**

+	 * @generated

+	 */

+	@Override

+	public SingleOutputPort getOutputPort() {

+		return <%=helperInfo.getOutputTypeVariable() + "out"%>;

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public void run() {

+		<%=helperInfo.getInputType()%> in = (<%=helperInfo.getInputType()%>) <%=helperInfo.getInputTypeVariable() + "in"%>.getValue();

+		<%=helperInfo.getOutputType()%> out = null;

+		

+		// TODO implement logic (replace 'null')

+		

+		<%=helperInfo.getOutputTypeVariable() + "out"%>.setValue(out);

+	}

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.generator/templates/singlefilter.javajet b/org.eclipse.emf.refactor.comrel.generator/templates/singlefilter.javajet
new file mode 100644
index 0000000..2eeabf5
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.generator/templates/singlefilter.javajet
@@ -0,0 +1,101 @@
+<%@ jet package="comrel.helper" class="SingleFilter"

+imports="comrel.generator.helper.*"%>

+<%HelperInfo helperInfo = (HelperInfo) argument; %>

+/**

+ * <copyright>

+ * </copyright>

+ */

+package <%=helperInfo.getPackageName()%>;

+

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+

+import comrel.extensions.ISingleFilterHelper;

+import comrel.MultiInputPort;

+import comrel.ComrelFactory;

+import comrel.SingleOutputPort;

+

+/**

+ * Helper class for synchronizing ports in 

+ * composite model refactorings specified in CoMReL.

+ * @generated

+ */

+public class <%=helperInfo.getClassName()%> implements ISingleFilterHelper {

+

+	final ComrelFactory factory = ComrelFactory.eINSTANCE;

+	private MultiInputPort <%=helperInfo.getInputTypeVariable() + "s"%>;

+	private SingleOutputPort <%=helperInfo.getOutputTypeVariable()%>;

+

+	/**

+	 * Default constructor.

+	 * @generated

+	 */

+	public <%=helperInfo.getClassName()%>() {

+		initInputPort();

+		initOutputPort();

+	}

+	

+	/**

+	 * Method for setting the input port.

+	 * @generated

+	 */

+	private void initInputPort() {

+		<%=helperInfo.getInputTypeVariable() + "s"%> = factory.createMultiInputPort();

+		<%=helperInfo.getInputTypeVariable() + "s"%>.setName("<%=helperInfo.getInputTypeVariable() + "s"%>");

+		<%=helperInfo.getInputTypeVariable() + "s"%>.setType(<%=helperInfo.getInputType()%>.class);

+	}

+	

+	/**

+	 * Method for setting the output port.

+	 * @generated

+	 */

+	private void initOutputPort(){

+		<%=helperInfo.getOutputTypeVariable()%> = factory.createSingleOutputPort();

+		<%=helperInfo.getOutputTypeVariable()%>.setName("<%=helperInfo.getOutputTypeVariable()%>");

+		<%=helperInfo.getOutputTypeVariable()%>.setType(<%=helperInfo.getOutputType()%>.class);

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public MultiInputPort getInputPort() {

+		return <%=helperInfo.getInputTypeVariable() + "s"%>;

+	}

+

+	/**

+	 * @generated

+	 */

+	@Override

+	public SingleOutputPort getOutputPort() {

+		return <%=helperInfo.getOutputTypeVariable()%>;

+	}

+	

+	/**

+	 * @generated

+	 */

+	@Override

+	public void run() {

+		EList<<%=helperInfo.getInputType()%>> in = setInput();

+		<%=helperInfo.getOutputType()%> out = null;

+		

+		// TODO implement logic (replace 'null')

+		

+		<%=helperInfo.getOutputTypeVariable()%>.setValue(out);

+	}

+

+	/**

+	 * Helper method for extracting input to Java objects. 

+	 * @generated

+	 */

+	private EList<<%=helperInfo.getInputType()%>> setInput() {

+		EList<Object> origin = <%=helperInfo.getInputTypeVariable() + "s"%>.getValue();

+		EList<<%=helperInfo.getInputType()%>> in = new BasicEList<<%=helperInfo.getInputType()%>>();

+		for (Object o : origin) {

+			in.add((<%=helperInfo.getInputType()%>) o);

+		}

+		return in;

+	}

+

+}

+	
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel.interpreter/.classpath b/org.eclipse.emf.refactor.comrel.interpreter/.classpath
new file mode 100644
index 0000000..8a8f166
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/.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-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/.project b/org.eclipse.emf.refactor.comrel.interpreter/.project
new file mode 100644
index 0000000..4539e24
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.emf.refactor.comrel.interpreter</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/org.eclipse.emf.refactor.comrel.interpreter/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.emf.refactor.comrel.interpreter/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..4cc5168
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Wed Sep 21 12:22:23 CEST 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.compliance=1.6

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.6

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.comrel.interpreter/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..05e49ba
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: CoMReL Interpreter
+Bundle-SymbolicName: org.eclipse.emf.refactor.comrel.interpreter;singleton:=true
+Bundle-Version: 0.9.0
+Bundle-Activator: comrel.interpreter.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;bundle-version="2.6.1",
+ org.eclipse.ltk.core.refactoring;bundle-version="3.5.100",
+ org.eclipse.core.resources;bundle-version="3.6.0",
+ org.eclipse.emf.refactor.comrel;bundle-version="0.8.0",
+ org.eclipse.uml2.uml;bundle-version="3.1.1",
+ org.eclipse.emf.refactor.refactoring;bundle-version="0.7.0",
+ org.eclipse.emf.refactor.refactoring.runtime;bundle-version="0.7.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Package: org.eclipse.emf.ecore.change,
+ org.eclipse.emf.ecore.change.util,
+ org.eclipse.emf.ecore.xmi.impl
+Export-Package: comrel.interpreter
diff --git a/org.eclipse.emf.refactor.comrel.interpreter/bin/.gitignore b/org.eclipse.emf.refactor.comrel.interpreter/bin/.gitignore
new file mode 100644
index 0000000..508dbce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/bin/.gitignore
@@ -0,0 +1 @@
+/comrel
diff --git a/org.eclipse.emf.refactor.comrel.interpreter/build.properties b/org.eclipse.emf.refactor.comrel.interpreter/build.properties
new file mode 100644
index 0000000..9a45d01
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/build.properties
@@ -0,0 +1,7 @@
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .,\

+               src/,\

+               bin/,\

+               models/

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/models/My.uml b/org.eclipse.emf.refactor.comrel.interpreter/models/My.uml
new file mode 100644
index 0000000..93d53b1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/models/My.uml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML" xmi:id="_6k19IONfEeCEPcyQkl_0QQ" name="testmodel">

+  <packagedElement xmi:type="uml:Package" xmi:id="_-g_poONfEeCEPcyQkl_0QQ" name="mypackage">

+    <packagedElement xmi:type="uml:Class" xmi:id="_BHkqUONgEeCEPcyQkl_0QQ" name="MyClass">

+      <ownedAttribute xmi:id="_DXISIONgEeCEPcyQkl_0QQ" name="myattribute"/>

+      <ownedOperation xmi:id="_guOeQON8EeCEPcyQkl_0QQ" name="op"/>

+    </packagedElement>

+  </packagedElement>

+</uml:Model>

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/models/extractsuperclass.comrel b/org.eclipse.emf.refactor.comrel.interpreter/models/extractsuperclass.comrel
new file mode 100644
index 0000000..b2b2744
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/models/extractsuperclass.comrel
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<comrel:CompositeRefactoring xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:comrel="http://comrel/0.1" name="ExtractSuperclass" refId="comrel.extractsuperclass" label="ExtractSuperclass" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+  <mainRefactoringUnit xsi:type="comrel:SequentialUnit" name="ExtractSuperclass">

+    <helperUnits xsi:type="comrel:SingleFilterUnit" name="GetFirstClass" helperUnitId="comrel.getfirstclass" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML" singleFilterHelper="//@helper.0">

+      <inputPort name="classes" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="umlclass" type="org.eclipse.uml2.uml.Class"/>

+    </helperUnits>

+    <helperUnits xsi:type="comrel:MultiFeatureUnit" name="GetOwnedAttributes" helperUnitId="comrel.getownedattributes" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML" multiFeatureHelper="//@helper.1">

+      <inputPort name="umlclass" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="attributes" type="org.eclipse.uml2.uml.Property"/>

+    </helperUnits>

+    <helperUnits xsi:type="comrel:MultiFeatureUnit" name="GetOwnedOperations" helperUnitId="comrel.getownedoperations" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML" multiFeatureHelper="//@helper.2">

+      <inputPort name="umlclass" type="org.eclipse.uml2.uml.Class"/>

+      <outputPort name="operations" type="org.eclipse.uml2.uml.Operation"/>

+    </helperUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" name="CreateSuperclass" seqExecutionOrder="1">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="CreateSuperclass" unitId="comrel.createsuperclass" label="CreateSuperclass" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML" modelRefactoring="//@modelRefactorings.0">

+        <inputPorts name="classname" description="" type="java.lang.String"/>

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>

+      </refactoringUnit>

+      <singleInputPorts name="classname" type="java.lang.String"/>

+      <multiInputPort name="classes" type="org.eclipse.uml2.uml.Class"/>

+    </refactoringUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" name="PullUpAttributes" seqExecutionOrder="2" strict="false" lblStrict="non strict">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="PullUpAttribute" unitId="comrel.pullupattribute" label="PullUpAttribute" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML" modelRefactoring="//@modelRefactorings.1">

+        <inputPorts name="classname" description="" type="java.lang.String"/>

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>

+      </refactoringUnit>

+      <singleInputPorts name="classname" type="java.lang.String"/>

+      <multiInputPort name="attributes" type="org.eclipse.uml2.uml.Property"/>

+    </refactoringUnits>

+    <refactoringUnits xsi:type="comrel:SingleQueuedUnit" name="PullUpOperations" seqExecutionOrder="3" strict="false" lblStrict="non strict">

+      <refactoringUnit xsi:type="comrel:AtomicUnit" name="PullUpOperation" unitId="comrel.pullupoperation" label="PullUpOperation" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML" modelRefactoring="//@modelRefactorings.2">

+        <inputPorts name="classname" description="" type="java.lang.String"/>

+        <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>

+      </refactoringUnit>

+      <singleInputPorts name="classname" type="java.lang.String"/>

+      <multiInputPort name="operations" type="org.eclipse.uml2.uml.Operation"/>

+    </refactoringUnits>

+    <inputPorts xsi:type="comrel:MultiInputPort" name="classes" type="org.eclipse.uml2.uml.Class"/>

+    <inputPorts xsi:type="comrel:SingleInputPort" name="superclassname" type="java.lang.String"/>

+  </mainRefactoringUnit>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.1"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.0/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.1"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.1/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:MultiSinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort" target="//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.1"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@refactoringUnits.2/@singleInputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.2/@refactoringUnit/@inputPorts.0"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@refactoringUnits.0/@multiInputPort"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@inputPorts.0" target="//@mainRefactoringUnit/@helperUnits.0/@inputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.1" target="//@mainRefactoringUnit/@refactoringUnits.1/@singleInputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.1" target="//@mainRefactoringUnit/@refactoringUnits.0/@singleInputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@inputPorts.1" target="//@mainRefactoringUnit/@refactoringUnits.2/@singleInputPorts.0"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.0/@outputPort" target="//@mainRefactoringUnit/@helperUnits.1/@inputPort"/>

+  <portMappings xsi:type="comrel:SinglePortMapping" source="//@mainRefactoringUnit/@helperUnits.0/@outputPort" target="//@mainRefactoringUnit/@helperUnits.2/@inputPort"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.1/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.1/@multiInputPort"/>

+  <portMappings xsi:type="comrel:MultiPortMapping" source="//@mainRefactoringUnit/@helperUnits.2/@outputPort" target="//@mainRefactoringUnit/@refactoringUnits.2/@multiInputPort"/>

+  <modelRefactorings name="CreateSuperclass" refId="comrel.createsuperclass" label="CreateSuperclass" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+    <inputPorts name="classname" description="" type="java.lang.String"/>

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Class"/>

+  </modelRefactorings>

+  <modelRefactorings name="PullUpAttribute" refId="comrel.pullupattribute" label="PullUpAttribute" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+    <inputPorts name="classname" description="" type="java.lang.String"/>

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Property"/>

+  </modelRefactorings>

+  <modelRefactorings name="PullUpOperation" refId="comrel.pullupoperation" label="PullUpOperation" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+    <inputPorts name="classname" description="" type="java.lang.String"/>

+    <inputPorts name="selectedEObject" description="" type="org.eclipse.uml2.uml.Operation"/>

+  </modelRefactorings>

+  <helper xsi:type="comrel:SingleFilterHelper" name="GetFirstClass" helperId="comrel.getfirstclass" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+    <inputPort name="classes" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="umlclass" type="org.eclipse.uml2.uml.Class"/>

+  </helper>

+  <helper xsi:type="comrel:MultiFeatureHelper" name="GetOwnedAttributes" helperId="comrel.getownedattributes" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+    <inputPort name="umlclass" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="attributes" type="org.eclipse.uml2.uml.Property"/>

+  </helper>

+  <helper xsi:type="comrel:MultiFeatureHelper" name="GetOwnedOperations" helperId="comrel.getownedoperations" namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">

+    <inputPort name="umlclass" type="org.eclipse.uml2.uml.Class"/>

+    <outputPort name="operations" type="org.eclipse.uml2.uml.Operation"/>

+  </helper>

+</comrel:CompositeRefactoring>

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/Activator.java b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/Activator.java
new file mode 100644
index 0000000..07ac7f3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/Activator.java
@@ -0,0 +1,50 @@
+package comrel.interpreter;

+

+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.emf.refactor.comrel.interpreter"; //$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/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreter.java b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreter.java
new file mode 100644
index 0000000..c021ffb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreter.java
@@ -0,0 +1,683 @@
+package comrel.interpreter;

+

+import java.io.File;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.HashSet;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IConfigurationElement;

+import org.eclipse.core.runtime.NullProgressMonitor;

+import org.eclipse.core.runtime.OperationCanceledException;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.EPackage;

+import org.eclipse.emf.ecore.change.ChangeDescription;

+import org.eclipse.emf.ecore.change.util.ChangeRecorder;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;

+import org.eclipse.emf.ecore.util.EcoreUtil;

+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.managers.RefactoringManager;

+import org.eclipse.emf.refactor.refactoring.runtime.ltk.LtkEmfRefactoringProcessorAdapter;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MultiFeatureHelper;

+import comrel.MultiFeatureUnit;

+import comrel.MultiFilterHelper;

+import comrel.MultiFilterUnit;

+import comrel.MultiInputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+import comrel.Port;

+import comrel.PortMapping;

+import comrel.RefactoringUnit;

+import comrel.SequentialUnit;

+import comrel.SingleFeatureHelper;

+import comrel.SingleFeatureUnit;

+import comrel.SingleFilterHelper;

+import comrel.SingleFilterUnit;

+import comrel.SingleInputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+import comrel.SingleQueuedUnit;

+import comrel.extensions.IMultiFeatureHelper;

+import comrel.extensions.IMultiFilterHelper;

+import comrel.extensions.ISingleFeatureHelper;

+import comrel.extensions.ISingleFilterHelper;

+import comrel.util.ExtensionPointInfo;

+import comrel.util.RegistryUtil;

+

+public class ComrelInterpreter {

+	

+	private LinkedList<Refactoring> emfRefactorings = new LinkedList<Refactoring>();

+	private Set<Helper> helper = new HashSet<Helper>();

+	private CompositeRefactoring compositeRefactoring;

+	private RefactoringUnit mainRefactoringUnit;

+	private EObject rootObject;

+	private boolean checkPreconditions = true;	

+

+	public ComrelInterpreter(EObject eObject) {

+		this.rootObject = EcoreUtil.getRootContainer(eObject);

+		registerComrel();

+		setEmfRefactorings();

+		setHelper();

+	}

+	

+	public RefactoringUnit getRootRefactoringUnit() {

+		return mainRefactoringUnit;

+	}

+	

+	public void loadComrelModel(String fileName) throws IOException {

+		URI uri = URI.createFileURI(new File(fileName).getAbsolutePath());

+		ResourceSet resourceSet = new ResourceSetImpl();

+		Resource resource = resourceSet.createResource(uri);

+		resource.load(Collections.EMPTY_MAP);

+		compositeRefactoring = (CompositeRefactoring) resource.getContents().get(0);

+		mainRefactoringUnit = compositeRefactoring.getMainRefactoringUnit();

+		if ((compositeRefactoring.getCustomInitialCondition() == null 

+				|| compositeRefactoring.getCustomInitialCondition().isEmpty())

+			&& (compositeRefactoring.getCustomFinalCondition() == null 

+				|| compositeRefactoring.getCustomFinalCondition().isEmpty())) {

+			// There are no precondition checks for the composite refactoring:

+			// set 'checkPreconditions' to true to check peconditions inside!

+			checkPreconditions = true;

+		} else {

+			checkPreconditions = false;

+		}

+	}

+	

+	public void execute() {

+		executeRefactoringUnit(this.mainRefactoringUnit);

+	}

+	

+	// needed

+	private void registerComrel() {

+		EPackage.Registry.INSTANCE

+			.put(ComrelPackage.eNS_URI, ComrelPackage.eINSTANCE);

+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap()

+			.put("comrel", new XMIResourceFactoryImpl());

+	}

+

+	// needed

+	private void setEmfRefactorings() {

+		this.emfRefactorings = RefactoringManager.getAllRefactorings();

+	}

+	

+	// needed

+	private void setHelper() {

+		helper.addAll(RegistryUtil.loadMultiFeatureHelper());

+		helper.addAll(RegistryUtil.loadMultiFilterHelper());

+		helper.addAll(RegistryUtil.loadSingleFeatureHelper());

+		helper.addAll(RegistryUtil.loadSingleFilterHelper());

+	}

+	

+	// needed

+	private boolean executeRefactoringUnit(RefactoringUnit refactoringUnit) {

+		boolean success = false;

+		if (refactoringUnit instanceof AtomicUnit) {

+			success = executeAtomicUnit((AtomicUnit) refactoringUnit);

+		}

+		if (refactoringUnit instanceof SingleQueuedUnit) {

+			success = executeSingleQueuedUnit((SingleQueuedUnit)refactoringUnit);

+		}

+		if (refactoringUnit instanceof SequentialUnit) {

+			success = executeSequentialUnit((SequentialUnit) refactoringUnit);

+		}		

+		return success;

+	}

+	

+	private boolean executeAtomicUnit(AtomicUnit atomicUnit) {

+		boolean success = false;

+//		System.out.println("---------------------------");

+//		System.out.println("Start execution of AtomicUnit");

+//		System.out.println("1 - Load corresponding EmfRefactoring");

+		Refactoring atomicRefactoring = getEmfRefactoringFromAtomicUnit(atomicUnit);

+		if (atomicRefactoring == null) {

+			System.out.println("Throw new EmfRefactoringNotFoundException()");

+		} else {

+//			System.out.println("EmfRefactoring: " + atomicRefactoring.getName());

+		}

+//		System.out.println("2 - Pass port values to EmfRefactoring");

+		passPortValues(atomicUnit, atomicRefactoring);

+//		System.out.println("3 - Check initial and final conditions");

+//		System.out.println("Controller null?: " 

+//				+ (atomicRefactoring.getController() == null));

+//		System.out.println("Processor null?: " 

+//				+ (atomicRefactoring.getController().getLtkRefactoringProcessor() == null));

+//		System.out.println("SetSelection to initialize Processor");

+		// new 

+		List<EObject> selection = new ArrayList<EObject>();

+		if (atomicRefactoring

+				.getController()

+				.getDataManagementObject()

+				.getInPortByName("selectedEObject").getValue() 

+				instanceof EObject) {

+			selection.add((EObject) atomicRefactoring

+					.getController()

+					.getDataManagementObject()

+					.getInPortByName("selectedEObject")

+					.getValue());

+		}

+		if (atomicRefactoring

+				.getController()

+				.getDataManagementObject()

+				.getInPortByName("selectedEObject").getValue() 

+				instanceof IEObjectGetter) {

+			selection.add(((IEObjectGetter) atomicRefactoring

+					.getController()

+					.getDataManagementObject()

+					.getInPortByName("selectedEObject")

+					.getValue()).getEObject());

+		}		

+		// end new

+		atomicRefactoring.getController().setSelection(selection);

+//		System.out.println("Processor null?: " 

+//				+ (atomicRefactoring.getController().getLtkRefactoringProcessor() == null));

+		LtkEmfRefactoringProcessorAdapter refactoringProcessor = 

+			(LtkEmfRefactoringProcessorAdapter)

+				atomicRefactoring.getController().getLtkRefactoringProcessor();

+//		System.out.println("RefactoringProcessor: " + refactoringProcessor.toString());

+		// NEW: check preconditions if specified by flag

+		if (checkPreconditions) {

+			if (! refactoringProcessor.checkConditions()) {

+//				System.out.println("AtomicUnit was NOT executed successfully!");

+				return success;

+			}

+		}	

+		// either: no precondition check

+		// or: successful precondition check

+		// -> execute refactoring!

+		try {

+			refactoringProcessor.createChange

+				(new NullProgressMonitor()).perform(new NullProgressMonitor());

+		} catch (OperationCanceledException e) {

+//			System.out.println("AtomicUnit was NOT executed successfully!");

+			e.printStackTrace();

+		} catch (CoreException e) {

+//			System.out.println("AtomicUnit was NOT executed successfully!");

+			e.printStackTrace();

+		}

+//		System.out.println("AtomicUnit was executed successfully!");

+		success = true;

+//		System.out.println("End execution of AtomicUnit");

+//		System.out.println("---------------------------");

+		return success;

+	}

+	

+	private boolean executeSequentialUnit(SequentialUnit sequentialUnit) {

+		boolean success = true;

+//		System.out.println("---------------------------");

+//		System.out.println("Start execution of SequentialUnit");

+//		System.out.println("---------------------------");

+//		System.out.println("1 - Set entire port values");

+//		System.out.println("1 a - Do port mapping of each main input port");

+		for (InputPort ip : sequentialUnit.getInputPorts()) {

+//			System.out.println("1 a i  - Get port mapping from input port");

+			List<PortMapping> pms = getPortMappingsFromSourcePort(sequentialUnit, ip);

+			for (PortMapping pm : pms) {

+//				System.out.println("       - PortMapping (source): " + pm.getSource());

+//				System.out.println("       - PortMapping (target): " + pm.getTarget());

+//				System.out.println("1 a ii - do port mapping");

+				doPortMapping(pm);

+//				System.out.println("       - PortMapping (source): " + pm.getSource());

+//				System.out.println("       - PortMapping (target): " + pm.getTarget());

+			}

+		}

+//		System.out.println("1 b - Execute each helper");

+		int numberOfHelpers = sequentialUnit.getHelperUnits().size();

+		boolean allHelpersExecuted = false;

+		while(!allHelpersExecuted) {

+			int numberOfExecutedHelpers = 0;

+			for (HelperUnit hu : sequentialUnit.getHelperUnits()) {

+//				System.out.println("1 b i - Execute helper with set input port");

+				boolean helperInputPortsSet = checkPortValuesSetInHelperUnit(hu);

+//				System.out.println("      - helperInputPortsSet: " + helperInputPortsSet);

+				if (helperInputPortsSet) {

+					executeHelperUnit(hu);

+//					System.out.println("1 b iii - Do mappings from helper output ports");

+//					System.out.println("        - Get port mapping from output port");

+					List<PortMapping> pms = getPortMappingsFromSourcePort(sequentialUnit, hu.getOutputPort());

+					for (PortMapping pm : pms) {

+//						System.out.println("        - PortMapping (source): " + pm.getSource());

+//						System.out.println("        - PortMapping (target): " + pm.getTarget());

+//						System.out.println("        - do PortMapping");

+						doPortMapping(pm);

+//						System.out.println("        - PortMapping (source): " + pm.getSource());

+//						System.out.println("        - PortMapping (target): " + pm.getTarget());

+						

+					}

+					numberOfExecutedHelpers++;

+				}

+			}

+			allHelpersExecuted = (numberOfExecutedHelpers == numberOfHelpers);

+		}		

+//		System.out.println("2 - Init variables");

+//		System.out.println("2 a - Set flag with respect to a strict execution");

+		final boolean strict = sequentialUnit.isStrict();

+//		System.out.println("      Execution is strict: " + strict);

+//		System.out.println("2 b - Set max number of child units");

+		int max = sequentialUnit.getRefactoringUnits().size();

+//		System.out.println("      Max number of child units: " + max);

+//		System.out.println("3 - Execute child units");

+		// prepare rollback

+		ChangeRecorder changeRecorder = new ChangeRecorder(rootObject);

+		for (int i = 1; i <= max; i++) {

+//			System.out.println(" -> Execution no: " + i);

+			RefactoringUnit ru = getRefactoringUnitByIndex(sequentialUnit, i);

+//			System.out.println(" -  Execute child unit: " + ru);

+			Boolean childSuccess = executeRefactoringUnit(ru);

+//			System.out.println(" -  Result execution: " + childSuccess);

+			if (strict && ! childSuccess) {

+				// rollback

+				ChangeDescription changeDescription = changeRecorder.endRecording();

+				changeDescription.apply();

+				// end rollback

+				success = false;

+				break;

+			}

+		}

+		if (success) {

+//			System.out.println("SequentialUnit was executed successfully!");

+		} else {

+//			System.out.println("SequentialUnit was NOT executed successfully!");

+		}

+//		System.out.println("---------------------------");

+//		System.out.println("End execution of SequentialUnit");

+//		System.out.println("---------------------------");

+		return success;

+	}

+	

+	private boolean executeSingleQueuedUnit(SingleQueuedUnit singleQueuedUnit) {

+		boolean success = true;

+//		System.out.println("---------------------------");

+//		System.out.println("Start execution of SingleQueudUnit");

+//		System.out.println("1 - Set flag with respect to a strict execution");

+		final boolean strict = singleQueuedUnit.isStrict();

+//		System.out.println("Execution is strict: " + strict);

+//		System.out.println("2 - Set max number of child unit executions");

+		int max = singleQueuedUnit.getMultiInputPort().getValue().size();

+//		System.out.println("Max number of child unit executions: " + max);

+		// prepare rollback

+		ChangeRecorder changeRecorder = new ChangeRecorder(rootObject);

+		for (int i = 0; i < max; i++) {

+//			System.out.println("--- Execution no: " + i);

+//			System.out.println("3 (a) - Pass port values to child unit");

+//			System.out.println("- Get MultiInputPort from parent unit");

+			MultiInputPort mip = singleQueuedUnit.getMultiInputPort();

+//			System.out.println("- MultiInputPort (Name/Type): " + mip.getName() + "; " + mip.getType());

+//			System.out.println("- Get corresponding PortMapping");

+			PortMapping pm = getPortMappingFromSourcePort(singleQueuedUnit, mip);

+//			System.out.println("- PortMapping (source): " + pm.getSource());

+//			System.out.println("- PortMapping (target): " + pm.getTarget());

+//			System.out.println("- Pass value " + i + " from MultiInputPort to SingleInputPort");

+			if (mip.getValue().get(i) == null) {

+//				System.out.println("-> null value on port position " + i + ": continue");

+				continue;

+			}

+			if ((((EObject)mip.getValue().get(i)).eResource() == null)

+					|| (((EObject)mip.getValue().get(i)).eResource().getResourceSet() == null)){

+//				System.out.println("-> null ressource/ressourceset on port position " + i + ": continue");

+				continue;

+			}

+			passValueFromMultiInputPortToSingleInputPort(pm, i);

+//			System.out.println("- Get all InputPorts from childUnit");

+			EList<InputPort> inputPorts = 

+				singleQueuedUnit.getRefactoringUnit().getAllInputPorts();

+//			System.out.println("- Total Number of InputPorts of childUnit: " + inputPorts.size());

+//			System.out.println("- Pass value to secondary input ports");

+			for (InputPort ip : inputPorts) {

+				if (((SingleInputPort)ip).getValue() == null) {

+//					System.out.println("- Get corresponding PortMapping");

+					PortMapping pmTemp = getPortMappingFromTargetPort(singleQueuedUnit, ip);

+//					System.out.println("- PortMapping (source): " + pmTemp.getSource());

+//					System.out.println("- PortMapping (target): " + pmTemp.getTarget());

+					doPortMapping(pmTemp);

+				}

+			}

+//			System.out.println("-- Types and Values of all input ports of child unit:");

+//			for (InputPort ip : singleQueuedUnit.getRefactoringUnit().getAllInputPorts()) {

+//				System.out.print("-- " + ip.getName() + " / ");

+//				if (ip instanceof SingleInputPort) {

+//					System.out.println(((SingleInputPort)ip).getValue());

+//				} else {

+//					System.out.println(((MultiInputPort)ip).getValue());

+//				}

+//			}

+//			System.out.println("---> CALL: Execute Child Unit");

+			Boolean childSuccess = executeRefactoringUnit(singleQueuedUnit.getRefactoringUnit());

+			if (strict && ! childSuccess) {

+				// rollback

+				ChangeDescription changeDescription = changeRecorder.endRecording();

+				changeDescription.apply();

+				// end rollback

+				success = false;

+				break;

+			}

+		}

+//		if (success) {

+//			System.out.println("SingleQueudUnit was executed successfully!");

+//		} else {

+//			System.out.println("SingleQueudUnit was NOT executed successfully!");

+//		}

+//		System.out.println("---------------------------");

+//		System.out.println("End execution of SingleQueudUnit");

+//		System.out.println("---------------------------");

+		return success;

+	}

+	

+	// needed

+	private void doPortMapping(PortMapping pm) {

+		if (pm instanceof SinglePortMapping) {

+			SinglePort source = ((SinglePortMapping) pm).getSource();

+			SinglePort target = ((SinglePortMapping) pm).getTarget();

+			target.setValue(source.getValue());

+		}

+		if (pm instanceof MultiPortMapping) {

+			MultiPort mip = ((MultiPortMapping) pm).getSource();

+			MultiPort sip = ((MultiPortMapping) pm).getTarget();

+			sip.getValue().clear();

+			sip.getValue().addAll(mip.getValue());

+		}

+	}

+	

+	// needed

+	private void runHelper(HelperUnit hu, Helper h) {

+		if (h instanceof SingleFilterHelper) {

+			ISingleFilterHelper isfih = getISingleFilterHelperFromSingleFilterHelper((SingleFilterHelper) h);

+			if (isfih != null) {

+//				System.out.println("       - output value before: " + isfih.getOutputPort().getValue());

+				isfih.getInputPort().getValue().addAll(((SingleFilterUnit)hu).getInputPort().getValue());

+				// TODO pass secondary port values -> change Interface ISingleFilterHelper...

+				isfih.run();

+//				System.out.println("       - output value after: " + isfih.getOutputPort().getValue());

+//				System.out.println("       - set output value to helper unit");

+				((SingleFilterUnit)hu).getOutputPort().setValue(isfih.getOutputPort().getValue());

+			}

+		}

+		if (h instanceof MultiFeatureHelper) {

+			IMultiFeatureHelper imfeh = getIMultiFeatureHelperFromMultiFeatureHelper((MultiFeatureHelper) h);

+			if (imfeh != null) {

+//				System.out.println("       - output value before: " + imfeh.getOutputPort().getValue());

+				imfeh.getInputPort().setValue(((MultiFeatureUnit)hu).getInputPort().getValue());

+				imfeh.run();

+//				System.out.println("       - output value after: " + imfeh.getOutputPort().getValue());

+//				System.out.println("       - set output value to helper unit");

+				((MultiFeatureUnit)hu).getOutputPort().getValue().addAll(imfeh.getOutputPort().getValue());

+			}

+		}

+		if (h instanceof SingleFeatureHelper) {

+			ISingleFeatureHelper isfeh = getISingleFeatureHelperFromSingleFeatureHelper((SingleFeatureHelper) h);

+			if (isfeh != null) {

+//				System.out.println("       - output value before: " + isfeh.getOutputPort().getValue());

+				isfeh.getInputPort().setValue(((SingleFeatureUnit)hu).getInputPort().getValue());

+				isfeh.run();

+//				System.out.println("       - output value after: " + isfeh.getOutputPort().getValue());

+//				System.out.println("       - set output value to helper unit");

+				((SingleFeatureUnit)hu).getOutputPort().setValue(isfeh.getOutputPort().getValue());

+			}

+		}

+		if (h instanceof MultiFilterHelper) {

+			IMultiFilterHelper imfih = getIMultiFilterHelperFromMultiFilterHelper((MultiFilterHelper) h);

+			if (imfih != null) {

+//				System.out.println("       - output value before: " + imfih.getOutputPort().getValue());

+				imfih.getInputPort().getValue().addAll(((MultiFilterUnit)hu).getInputPort().getValue());

+				// TODO pass secondary port values -> change Interface IMultiFilterHelper...

+				imfih.run();

+//				System.out.println("       - output value after: " + imfih.getOutputPort().getValue());

+//				System.out.println("       - set output value to helper unit");

+				((MultiFilterUnit)hu).getOutputPort().getValue().addAll(imfih.getOutputPort().getValue());

+			}

+		}

+	}

+	

+	private IMultiFilterHelper getIMultiFilterHelperFromMultiFilterHelper(

+			MultiFilterHelper h) {

+//		System.out.println("1 b ii - Load Interface IMultiFilterHelper");

+		IConfigurationElement[] iMultiFilterHelpers = Platform.getExtensionRegistry()

+			.getConfigurationElementsFor(ExtensionPointInfo.MULTIFILTER_EXTENSION_POINT);

+//		System.out.println("       - Number of multifilters: " + iMultiFilterHelpers.length);

+		IMultiFilterHelper imfih = null;

+		for (IConfigurationElement ice : iMultiFilterHelpers) {

+			try {

+				String helperId = h.getHelperId();

+				String id = ice.getAttribute("id");

+//				System.out.println("       - id of helper: " + helperId);

+//				System.out.println("       - id of interface: " + id);

+				if (helperId.equals(id)) {

+					imfih  = (IMultiFilterHelper) ice.createExecutableExtension("class");

+					break;

+				}				

+			} catch (CoreException e) {

+				e.printStackTrace();

+			}

+		}

+//		System.out.println("       - class of multifilter: " + imfih.getClass().getName());

+		return imfih;

+	}

+

+	// needed

+	private ISingleFeatureHelper getISingleFeatureHelperFromSingleFeatureHelper(

+			SingleFeatureHelper h) {

+//		System.out.println("1 b ii - Load Interface ISingleFeatureHelper");

+		IConfigurationElement[] iSingleFeatureHelpers = Platform.getExtensionRegistry()

+			.getConfigurationElementsFor(ExtensionPointInfo.SINGLEFEATURE_EXTENSION_POINT);

+//		System.out.println("       - Number of singlefeatures: " + iSingleFeatureHelpers.length);

+		ISingleFeatureHelper isfeh = null;

+		for (IConfigurationElement ice : iSingleFeatureHelpers) {

+			try {

+				String helperId = h.getHelperId();

+				String id = ice.getAttribute("id");

+//				System.out.println("       - id of helper: " + helperId);

+//				System.out.println("       - id of interface: " + id);

+				if (helperId.equals(id)) {

+					isfeh  = (ISingleFeatureHelper) ice.createExecutableExtension("class");

+					break;

+				}				

+			} catch (CoreException e) {

+				e.printStackTrace();

+			}

+		}

+//		System.out.println("       - class of singlefeature: " + isfeh.getClass().getName());

+		return isfeh;

+	}

+

+	// needed

+	private PortMapping getPortMappingFromSourcePort(RefactoringUnit refactoringUnit, Port port) {

+		EList<PortMapping> portMappings = compositeRefactoring.getPortMappings();

+		for (PortMapping pm : portMappings) {

+			if (pm.getSource() == port){

+				return pm;

+			}

+		}

+		return null;

+	}

+	

+	// needed

+	private PortMapping getPortMappingFromTargetPort(RefactoringUnit refactoringUnit, InputPort port) {

+		EList<PortMapping> portMappings = compositeRefactoring.getPortMappings();

+		for (PortMapping pm : portMappings) {

+			if (pm.getTarget() == port){

+				return pm;

+			}

+		}

+		return null;

+	}

+	

+	// needed

+	private void passValueFromMultiInputPortToSingleInputPort(PortMapping pm, int i) {

+		MultiInputPort mip = (MultiInputPort) pm.getSource();

+		SingleInputPort sip = (SingleInputPort) pm.getTarget();

+		sip.setValue(mip.getValue().get(i));

+	}

+	

+	// needed

+	@SuppressWarnings("unchecked")

+	private void passPortValues(AtomicUnit atomicUnit,

+			Refactoring atomicRefactoring) {

+		for (SingleInputPort sip : atomicUnit.getInputPorts()) {

+			String portName = sip.getName();

+			atomicRefactoring

+				.getController().getDataManagementObject()

+				.getInPortByName(portName).setValue(sip.getValue());

+		}

+	}

+

+	// needed

+	private Refactoring getEmfRefactoringFromAtomicUnit(AtomicUnit atomicUnit) {

+		for (Refactoring emfRef : emfRefactorings) {

+			if (emfRef.getId().equals(atomicUnit.getModelRefactoring().getRefId())){

+				return emfRef;

+			}

+		}

+		return null;

+	}

+

+	// needed

+	private RefactoringUnit getRefactoringUnitByIndex(

+			SequentialUnit sequentialUnit, int i) {

+		for (RefactoringUnit ru : sequentialUnit.getRefactoringUnits()) {

+			if (ru.getSeqExecutionOrder() == i) {

+				return ru;

+			}

+		}

+		return null;

+	}

+

+	// needed

+	private List<PortMapping> getPortMappingsFromSourcePort(RefactoringUnit refactoringUnit, Port port) {

+		List<PortMapping> pms = new ArrayList<PortMapping>();

+		EList<PortMapping> portMappings = compositeRefactoring.getPortMappings();

+		for (PortMapping pm : portMappings) {

+			if (pm.getSource() == port){

+				pms.add(pm);

+			}

+		}

+		return pms;

+	}

+

+	// needed

+	private void executeHelperUnit(HelperUnit hu) {

+//		System.out.println("      - execute Helper: " + hu.getHelperUnitId());

+//		System.out.println("      - Load corresponding Helper");

+		Helper h = getHelperFromHelperUnit(hu);

+//		if (h == null) {

+//			System.out.println("Throw new HelperNotFoundException()");

+//		} else {

+//			System.out.println("      - Helper: " + h.getName());

+//		}

+//		System.out.println("      - Run Helper");

+		runHelper(hu, h);

+	}

+	

+	// needed

+	private IMultiFeatureHelper getIMultiFeatureHelperFromMultiFeatureHelper(

+			MultiFeatureHelper h) {

+//		System.out.println("1 b ii - Load Interface IMultiFeatureHelper");

+		IConfigurationElement[] iMultiFeatureHelpers = Platform.getExtensionRegistry()

+			.getConfigurationElementsFor(ExtensionPointInfo.MULTIFEATURE_EXTENSION_POINT);

+//		System.out.println("       - Number of multifeatures: " + iMultiFeatureHelpers.length);

+		IMultiFeatureHelper imfeh = null;

+		for (IConfigurationElement ice : iMultiFeatureHelpers) {

+			try {

+				String helperId = h.getHelperId();

+				String id = ice.getAttribute("id");

+//				System.out.println("       - id of helper: " + helperId);

+//				System.out.println("       - id of interface: " + id);

+				if (helperId.equals(id)) {

+					imfeh  = (IMultiFeatureHelper) ice.createExecutableExtension("class");

+					break;

+				}				

+			} catch (CoreException e) {

+				e.printStackTrace();

+			}

+		}

+//		System.out.println("       - class of multifeature: " + imfeh.getClass().getName());

+		return imfeh;

+	}

+

+	// needed

+	private ISingleFilterHelper getISingleFilterHelperFromSingleFilterHelper(

+			SingleFilterHelper h) {

+//		System.out.println("1 b ii - Load Interface ISingleFilterHelper");

+		IConfigurationElement[] iSingleFilterHelpers = Platform.getExtensionRegistry()

+			.getConfigurationElementsFor(ExtensionPointInfo.SINGLEFILTER_EXTENSION_POINT);

+//		System.out.println("       - Number of singlefilters: " + iSingleFilterHelpers.length);

+		ISingleFilterHelper isfh = null;

+		for (IConfigurationElement ice : iSingleFilterHelpers) {

+			try {

+				String helperId = h.getHelperId();

+				String id = ice.getAttribute("id");

+//				System.out.println("       - id of helper: " + helperId);

+//				System.out.println("       - id of interface: " + id);

+				if (helperId.equals(id)) {

+					isfh  = (ISingleFilterHelper) ice.createExecutableExtension("class");

+					break;

+				}				

+			} catch (CoreException e) {

+				e.printStackTrace();

+			}

+		}

+//		System.out.println("       - class of singlefilter: " + isfh.getClass().getName());

+		return isfh;

+	}

+

+	// needed

+	private Helper getHelperFromHelperUnit(HelperUnit hu) {

+		for (Helper h : this.helper) {

+			if (h.getHelperId().equals(hu.getHelperUnitId())){

+				return h;

+			}

+		}

+		return null;

+	}

+

+	// needed

+	private boolean checkPortValuesSetInHelperUnit(HelperUnit hu) {

+		if (hu instanceof SingleFilterUnit) {

+			if (((SingleFilterUnit) hu).getInputPort().getValue() == null) {

+				return false;

+			}

+		}		

+		if (hu instanceof MultiFilterUnit) {

+			if (((MultiFilterUnit) hu).getInputPort().getValue() == null) {

+				return false;

+			}

+		}

+		if (hu instanceof SingleFeatureUnit) {

+			if (((SingleFeatureUnit) hu).getInputPort().getValue() == null) {

+				return false;

+			}			

+			for (MultiInputPort mip : ((SingleFeatureUnit) hu).getSecondaryInputPorts()) {

+				if (mip.getValue() == null) {

+					return false;

+				}

+			}

+		}

+		if (hu instanceof MultiFeatureUnit) {

+			if (((MultiFeatureUnit) hu).getInputPort().getValue() == null) {

+				return false;

+			}			

+			for (MultiInputPort mip : ((MultiFeatureUnit) hu).getSecondaryInputPorts()) {

+				if (mip.getValue() == null) {

+					return false;

+				}

+			}

+		}

+		return true;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreterPrinter.java b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreterPrinter.java
new file mode 100644
index 0000000..73b31b8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreterPrinter.java
@@ -0,0 +1,63 @@
+package comrel.interpreter;

+

+public class ComrelInterpreterPrinter {

+	

+	ComrelInterpreter comrelInterpreter;

+	

+	public ComrelInterpreterPrinter(ComrelInterpreter comrelInterpreter) {

+		this.comrelInterpreter = comrelInterpreter;

+	}

+	

+	public void printRefactorings() {

+		System.out.println("---------------------------------------");

+		System.out.println("------- Registered Refactorings -------");

+		System.out.println("---------------------------------------");

+//		for (EmfRefactoring ref : comrelInterpreter.emfRefactorings) {

+//			System.out.println(ref.getId());

+//		}

+		System.out.println("---------------------------------------");

+	}

+	

+	public void printHelper() {

+		System.out.println("---------------------------------------");

+		System.out.println("--------- Registered Helper -----------");

+		System.out.println("---------------------------------------");

+//		for (Helper hel : comrelInterpreter.helper) {

+//			System.out.println(hel.getName());

+//		}

+		System.out.println("---------------------------------------");

+	}

+	

+	public void printRootObject() {

+		System.out.println("---------------------------------------");

+		System.out.println("--------- Root Model Object -----------");

+		System.out.println("---------------------------------------");

+//		System.out.println(comrelInterpreter.rootObject.toString());

+		System.out.println("---------------------------------------");

+	}

+	

+	public void printCheckPreconditions() {

+		System.out.println("---------------------------------------");

+		System.out.println("--------- Flag Preconditions Check ----");

+		System.out.println("---------------------------------------");

+//		System.out.println(comrelInterpreter.checkPreconditions);

+		System.out.println("---------------------------------------");

+	}

+	

+	public void printCompositeRefactoring() {

+		System.out.println("---------------------------------------");

+		System.out.println("--------- Composite Refactoring -------");

+		System.out.println("---------------------------------------");

+//		System.out.println(comrelInterpreter.compositeRefactoring);

+		System.out.println("---------------------------------------");

+	}

+	

+	public void printMainRefactoringUnit() {

+		System.out.println("---------------------------------------");

+		System.out.println("---------- Main Refactoring Unit ------");

+		System.out.println("---------------------------------------");

+//		System.out.println(comrelInterpreter.mainRefactoringUnit);

+		System.out.println("---------------------------------------");

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreterTester.java b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreterTester.java
new file mode 100644
index 0000000..0303beb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/ComrelInterpreterTester.java
@@ -0,0 +1,54 @@
+package comrel.interpreter;

+

+import java.io.File;

+import java.io.IOException;

+import java.util.Collections;

+import java.util.Map;

+

+import org.eclipse.emf.common.util.URI;

+import org.eclipse.emf.ecore.resource.Resource;

+import org.eclipse.emf.ecore.resource.ResourceSet;

+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;

+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;

+import org.eclipse.uml2.uml.Model;

+import org.eclipse.uml2.uml.UMLPackage;

+

+public abstract class ComrelInterpreterTester {

+

+	public static void testInterpreterInit() {

+		Model umlModel;

+		umlModel = loadUmlModel("D:/Uni/Eclipse/scm/ws/comrel.interpreter/models/My.uml");

+		ComrelInterpreter comrelInterpreter = new ComrelInterpreter(umlModel);

+		ComrelInterpreterPrinter printer = new ComrelInterpreterPrinter(comrelInterpreter);

+		printer.printRootObject();

+		printer.printRefactorings();

+		printer.printHelper();

+		try {

+			comrelInterpreter.loadComrelModel("D:/Uni/Eclipse/scm/ws/comrel.interpreter/models/extractsuperclass.comrel");

+		} catch (IOException e) {

+			e.printStackTrace();

+		}

+		printer.printCompositeRefactoring();

+		printer.printMainRefactoringUnit();

+		printer.printCheckPreconditions();

+	}

+	

+	private static Model loadUmlModel(String fileName) {

+		UMLPackage.eINSTANCE.eClass();

+		Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;

+		Map<String, Object> m = reg.getExtensionToFactoryMap();

+		m.put("uml", new XMIResourceFactoryImpl());

+		URI uri = URI.createFileURI(new File(fileName).getAbsolutePath());

+		ResourceSet resourceSet = new ResourceSetImpl();

+		Resource resource = resourceSet.createResource(uri);

+		try {

+			resource.load(Collections.EMPTY_MAP);

+		} catch (IOException e) {

+			e.printStackTrace();

+		}

+		Model model = (Model) resource.getContents().get(0); 

+		System.out.println("Model: " + model.toString());

+		return model;

+	}

+

+}

diff --git a/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/IEObjectGetter.java b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/IEObjectGetter.java
new file mode 100644
index 0000000..37f9537
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel.interpreter/src/comrel/interpreter/IEObjectGetter.java
@@ -0,0 +1,9 @@
+package comrel.interpreter;

+

+import org.eclipse.emf.ecore.EObject;

+

+public interface IEObjectGetter {

+	

+	public EObject getEObject();

+

+}

diff --git a/org.eclipse.emf.refactor.comrel/.classpath b/org.eclipse.emf.refactor.comrel/.classpath
new file mode 100644
index 0000000..ed2bc12
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/org.eclipse.emf.refactor.comrel/.project b/org.eclipse.emf.refactor.comrel/.project
new file mode 100644
index 0000000..3e7e78f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.emf.refactor.comrel</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.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+	</natures>

+</projectDescription>

diff --git a/org.eclipse.emf.refactor.comrel/.settings/comrel.gmfgen.prefs b/org.eclipse.emf.refactor.comrel/.settings/comrel.gmfgen.prefs
new file mode 100644
index 0000000..72bc584
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/.settings/comrel.gmfgen.prefs
@@ -0,0 +1,7 @@
+#Fri Sep 16 17:43:18 CEST 2011

+eclipse.preferences.version=1

+generate_rcp=false

+ignore_gmfgen_validation=false

+ignore_mapmodel_validation=false

+use_map_mode=true

+use_runtime_figures=true

diff --git a/org.eclipse.emf.refactor.comrel/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs b/org.eclipse.emf.refactor.comrel/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs
new file mode 100644
index 0000000..4fc4a01
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs
@@ -0,0 +1,4 @@
+#Fri Sep 16 17:41:50 CEST 2011

+eclipse.preferences.version=1

+gmf_dashboard/domainGenerationModel=platform\:/resource/comrel/model/comrel.genmodel

+gmf_dashboard/domainModel=platform\:/resource/comrel/model/comrel.ecore

diff --git a/org.eclipse.emf.refactor.comrel/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.comrel/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..770d986
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: CoMReL

+Bundle-SymbolicName: org.eclipse.emf.refactor.comrel;singleton:=true

+Bundle-Version: 0.9.0

+Bundle-ClassPath: .

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

+Export-Package: comrel,

+ comrel.extensions,

+ comrel.figures,

+ comrel.impl,

+ comrel.util

+Require-Bundle: org.eclipse.core.runtime,

+ org.eclipse.emf.ecore;visibility:=reexport,

+ org.eclipse.gmf.runtime.draw2d.ui;bundle-version="1.4.1",

+ org.eclipse.draw2d;bundle-version="3.6.2",

+ org.eclipse.ltk.core.refactoring;bundle-version="3.5.100",

+ org.eclipse.emf.refactor.refactoring;bundle-version="0.7.0"

+Bundle-ActivationPolicy: lazy

diff --git a/org.eclipse.emf.refactor.comrel/bin/.gitignore b/org.eclipse.emf.refactor.comrel/bin/.gitignore
new file mode 100644
index 0000000..508dbce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/bin/.gitignore
@@ -0,0 +1 @@
+/comrel
diff --git a/org.eclipse.emf.refactor.comrel/build.properties b/org.eclipse.emf.refactor.comrel/build.properties
new file mode 100644
index 0000000..575799b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/build.properties
@@ -0,0 +1,17 @@
+

+# <copyright>

+# </copyright>

+#

+# $Id$

+

+bin.includes = .,\

+               model/,\

+               META-INF/,\

+               plugin.xml,\

+               plugin.properties,\

+               schema/,\

+               src/,\

+               bin/

+jars.compile.order = .

+source.. = src/

+output.. = bin/

diff --git a/org.eclipse.emf.refactor.comrel/model/ECore2GMF.eol b/org.eclipse.emf.refactor.comrel/model/ECore2GMF.eol
new file mode 100644
index 0000000..a2709d1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/ECore2GMF.eol
@@ -0,0 +1,91 @@
+

+-- nennt die default-Gruppe in 'Units' um

+var toolGroupUnit = GmfTool!ToolGroup.all.selectOne(r|r.title = 'Objects');

+toolGroupUnit.title='Composite Units';

+

+-- erstellt die Tool-Group Connectoren

+-- var toolGroupConnectoren = new GmfTool!ToolGroup;

+-- toolGroupConnectoren.title = 'Connectoren';

+-- toolGroupConnectoren.collapsible = true;

+

+-- erstellt die Tool-Group AtomicUnits

+var toolGroupAtomicUnits = new GmfTool!ToolGroup;

+toolGroupAtomicUnits.title = 'Atomic Units';

+toolGroupAtomicUnits.collapsible = true;

+

+-- erstellt die Tool-Group FilterUnits

+var toolGroupFilter = new GmfTool!ToolGroup;

+toolGroupFilter.title = 'Filter Units';

+toolGroupFilter.collapsible = true;

+

+-- erstellt die Tool-Group SingleFeatureUnits

+var toolGroupFeature = new GmfTool!ToolGroup;

+toolGroupFeature.title = 'Feature Units';

+toolGroupFeature.collapsible = true;

+

+-- sucht aus allen Tools die Connectoren raus und fügt sie der Connectoren-Tool_group hinzu

+var atomics = toolGroupUnit.getTools().select(t | t.title.endsWith('AtomicUnit'));

+toolGroupAtomicUnits.tools.addAll(atomics);

+

+-- sucht aus allen Tools die Features raus und fügt sie der SingleFeature-Tool_group hinzu

+var feature = toolGroupUnit.getTools().select(t | t.title.endsWith('FeatureUnit'));

+toolGroupFeature.tools.addAll(feature);

+

+-- sucht aus allen Tools die Filter raus und fügt sie der Filter-Tool_group hinzu

+var filter = toolGroupUnit.getTools().select(t | t.title.endsWith('FilterUnit'));

+toolGroupFilter.tools.addAll(filter);

+

+

+-- erstellt die Tool-Group Ports

+var toolGroupPort= new GmfTool!ToolGroup;

+toolGroupPort.title='Ports';

+toolGroupPort.collapsible = true;

+

+-- sucht aus allen Tools die Ports raus und fügt sie der Ports-Tool-Group hinzu

+

+-- var portsWeg = toolGroupUnit.getTools().select(t | t.title.endsWith('OutputPort'));

+-- delete portsWeg;

+var ports = toolGroupUnit.getTools().select(t | t.title.endsWith('Port'));

+toolGroupPort.tools.addAll(ports);

+

+-- Sucht die Palette und fügt die Ports- & Connectoren-Tool-Group hinzu

+var palette = GmfTool!Palette.all.selectOne(r | r.title = 'comrelPalette');

+palette.tools.add(toolGroupAtomicUnits);

+palette.tools.add(toolGroupFilter);

+palette.tools.add(toolGroupFeature);

+palette.tools.add(toolGroupPort);

+

+-- Sucht die Mappings-Toolgroup, entfernt sie und fügt sie wieder hinzu (damit sie am Ende steht)

+var toolGroupMapping = GmfTool!ToolGroup.all.selectOne(r|r.title = 'Connections');

+toolGroupMapping.title = 'Mappings';

+palette.tools.remove(toolGroupMapping);

+palette.tools.add(toolGroupMapping);

+

+-- LinkConstraints für das SInglePortMapping-Mapping

+var singlePortMappingConstraint = new GmfMap!LinkConstraints;

+var singleSourceConstraint = new GmfMap!Constraint;

+singleSourceConstraint.body = 'self<>oppositeEnd';

+singlePortMappingConstraint.setSourceEnd(singleSourceConstraint);

+

+var singlePortMappingTool = toolGroupMapping.tools.selectOne(m | m.title='SinglePortMapping');

+

+var singlePortMappingMapping = GmfMap!LinkMapping.all.selectOne(m | m.tool = singlePortMappingTool);

+singlePortMappingMapping.setCreationConstraints(singlePortMappingConstraint);

+

+-- LinkConstraints für das MultiPortMapping-Mapping

+var multiPortMappingConstraint = new GmfMap!LinkConstraints;

+var multiSourceConstraint = new GmfMap!Constraint;

+multiSourceConstraint.body = 'self<>oppositeEnd';

+multiPortMappingConstraint.setSourceEnd(multiSourceConstraint);

+var multiPortMappingTool = toolGroupMapping.tools.selectOne(m | m.title='MultiPortMapping');

+var multiPortMappingMapping = GmfMap!LinkMapping.all.selectOne(m | m.tool = multiPortMappingTool);

+multiPortMappingMapping.setCreationConstraints(multiPortMappingConstraint);

+

+-- LinkConstraints für das multiSinglePortMapping-Mapping

+var multiSinglePortMappingConstraint = new GmfMap!LinkConstraints;

+var multiSingleSourceConstraint = new GmfMap!Constraint;

+multiSingleSourceConstraint.body = 'self<>oppositeEnd';

+multiSinglePortMappingConstraint.setSourceEnd(multiSingleSourceConstraint);

+var multiSinglePortMappingTool = toolGroupMapping.tools.selectOne(m | m.title='MultiSinglePortMapping');

+var multiSinglePortMappingMapping = GmfMap!LinkMapping.all.selectOne(m | m.tool = multiSinglePortMappingTool);

+multiSinglePortMappingMapping.setCreationConstraints(multiSinglePortMappingConstraint);
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.ecore b/org.eclipse.emf.refactor.comrel/model/comrel.ecore
new file mode 100644
index 0000000..5845a41
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.ecore
@@ -0,0 +1,528 @@
+<?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="comrel"

+    nsURI="http://comrel/0.1" nsPrefix="comrel">

+  <eAnnotations source="gmf">

+    <details key="foo" value="bar"/>

+  </eAnnotations>

+  <eClassifiers xsi:type="ecore:EClass" name="CompositeRefactoring" eSuperTypes="#//ModelRefactoring">

+    <eAnnotations source="gmf.diagram">

+      <details key="foo" value="bar"/>

+      <details key="onefile" value="false"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="mainRefactoringUnit" lowerBound="1"

+        eType="#//RefactoringUnit" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="portMappings" upperBound="-1"

+        eType="#//PortMapping" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="modelRefactorings" upperBound="-1"

+        eType="#//ModelRefactoring" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="helper" upperBound="-1"

+        eType="#//Helper" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingVisualization" lowerBound="1"

+        eType="#//MappingVisualization" defaultValueLiteral="0"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="customInitialCondition"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="customFinalCondition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" interface="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="DescribedElement" abstract="true" interface="true">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="RefactoringUnit" abstract="true" eSuperTypes="#//NamedElement">

+    <eOperations name="getAllInputPorts" upperBound="-1" eType="#//InputPort"/>

+    <eOperations name="setSeqExecutionOrder">

+      <eParameters name="seqExecutionOrder" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

+      <eParameters name="superCall" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

+    </eOperations>

+    <eOperations name="setName">

+      <eParameters name="newName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+      <eParameters name="updateContainer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="seqExecutionOrder" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ModelRefactoring" eSuperTypes="#//NamedElement #//DescribedElement">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="refId" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespaceUri" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" upperBound="-1"

+        eType="#//SingleInputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="AtomicUnit" eSuperTypes="#//RefactoringUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="label,type"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" lowerBound="1"

+        upperBound="-1" eType="#//SingleInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unitId" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespaceUri" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Atomic Unit"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="modelRefactoring" lowerBound="1"

+        eType="#//ModelRefactoring"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="checkInitialConditionFlag"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="checkFinalConditionFlag"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="CompositeUnit" abstract="true" eSuperTypes="#//RefactoringUnit"/>

+  <eClassifiers xsi:type="ecore:EClass" name="SequentialUnit" eSuperTypes="#//CompositeUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type,lblStrict"/>

+      <details key="label.pattern" value="{0}:{1} -{2}-"/>

+    </eAnnotations>

+    <eOperations name="updateSeqExecutionOrder"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="helperUnits" upperBound="-1"

+        eType="#//HelperUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="refactoringUnits" lowerBound="1"

+        upperBound="-1" eType="#//RefactoringUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" lowerBound="1"

+        upperBound="-1" eType="#//InputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="strict" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

+        defaultValueLiteral="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Sequential Unit"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lblStrict" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        defaultValueLiteral="strict"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ConditionCheck" eSuperTypes="#//NamedElement #//DescribedElement">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type,spec"/>

+      <details key="label.pattern" value="{0}:{1} -{2}-"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Condition Check"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="spec" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ConditionalUnit" eSuperTypes="#//CompositeUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="if" lowerBound="1" eType="#//ConditionCheck"

+        containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="helperUnits" upperBound="-1"

+        eType="#//HelperUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="then" lowerBound="1" eType="#//RefactoringUnit"

+        containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//RefactoringUnit"

+        containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" lowerBound="1"

+        upperBound="-1" eType="#//InputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Conditional Unit"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="QueuedUnit" abstract="true" eSuperTypes="#//CompositeUnit">

+    <eOperations name="init"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="strict" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

+        defaultValueLiteral="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleQueuedUnit" eSuperTypes="#//QueuedUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type,lblStrict"/>

+      <details key="label.pattern" value="{0}:{1} -{2}-"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="helperUnits" upperBound="-1"

+        eType="#//HelperUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="refactoringUnit" lowerBound="1"

+        eType="#//RefactoringUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="singleInputPorts" upperBound="-1"

+        eType="#//SingleInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="multiInputPort" lowerBound="1"

+        eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Single Queued Unit"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lblStrict" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        defaultValueLiteral="strict"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="TwicedQueuedUnit" abstract="true" eSuperTypes="#//QueuedUnit"/>

+  <eClassifiers xsi:type="ecore:EClass" name="CartesianQueuedUnit" eSuperTypes="#//TwicedQueuedUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type,lblStrict"/>

+      <details key="label.pattern" value="{0}:{1} -{2}-"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="helperUnits" upperBound="-1"

+        eType="#//HelperUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="refactoringUnit" lowerBound="1"

+        eType="#//RefactoringUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="singleInputPorts" upperBound="-1"

+        eType="#//SingleInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="multiInputPorts" lowerBound="2"

+        upperBound="2" eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Cartesian Queued Unit"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lblStrict" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        defaultValueLiteral="strict"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ParallelQueuedUnit" eSuperTypes="#//TwicedQueuedUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type,lblStrict"/>

+      <details key="label.pattern" value="{0}:{1} -{2}-"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="helperUnits" upperBound="-1"

+        eType="#//HelperUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="refactoringUnits" lowerBound="1"

+        eType="#//RefactoringUnit" containment="true">

+      <eAnnotations source="gmf.compartment">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="singleInputPorts" upperBound="-1"

+        eType="#//SingleInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="multiInputPorts" lowerBound="2"

+        upperBound="2" eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Parallel Queued Unit"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lblStrict" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        defaultValueLiteral="strict"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="HelperUnit" abstract="true" eSuperTypes="#//NamedElement #//DescribedElement">

+    <eOperations name="getInputPort" lowerBound="1" eType="#//InputPort"/>

+    <eOperations name="getOutputPort" lowerBound="1" eType="#//OutputPort"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="helperUnitId" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespaceUri" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FeatureUnit" abstract="true" eSuperTypes="#//HelperUnit"/>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleFeatureUnit" eSuperTypes="#//FeatureUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" lowerBound="1"

+        eType="#//SingleInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryInputPorts" upperBound="-1"

+        eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//SingleOutputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="singleFeatureHelper" lowerBound="1"

+        eType="#//SingleFeatureHelper"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Single Feature Unit"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiFeatureUnit" eSuperTypes="#//FeatureUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" lowerBound="1"

+        eType="#//SingleInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryInputPorts" upperBound="-1"

+        eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//MultiOutputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="multiFeatureHelper" lowerBound="1"

+        eType="#//MultiFeatureHelper"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Multi Feature Unit"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterUnit" abstract="true" eSuperTypes="#//HelperUnit"/>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleFilterUnit" eSuperTypes="#//FilterUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" lowerBound="1"

+        eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//SingleOutputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="singleFilterHelper" lowerBound="1"

+        eType="#//SingleFilterHelper"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Single Filter Unit"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiFilterUnit" eSuperTypes="#//FilterUnit">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label.icon" value="false"/>

+      <details key="label" value="name,type"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" lowerBound="1"

+        eType="#//MultiInputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//MultiOutputPort" containment="true">

+      <eAnnotations source="gmf.affixed">

+        <details key="foo" value="bar"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="multiFilterHelper" lowerBound="1"

+        eType="#//MultiFilterHelper"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"

+        changeable="false" defaultValueLiteral="Multi Filter Unit"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Helper" abstract="true" eSuperTypes="#//NamedElement #//DescribedElement">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="helperId" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespaceUri" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FeatureHelper" abstract="true" eSuperTypes="#//Helper">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" lowerBound="1"

+        eType="#//SingleInputPort" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryInputPorts" upperBound="-1"

+        eType="#//MultiInputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleFeatureHelper" eSuperTypes="#//FeatureHelper">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//SingleOutputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiFeatureHelper" eSuperTypes="#//FeatureHelper">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//MultiOutputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FilterHelper" abstract="true" eSuperTypes="#//Helper">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" lowerBound="1"

+        eType="#//MultiInputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleFilterHelper" eSuperTypes="#//FilterHelper">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//SingleOutputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiFilterHelper" eSuperTypes="#//FilterHelper">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" lowerBound="1"

+        eType="#//MultiOutputPort" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Port" abstract="true" eSuperTypes="#//NamedElement #//DescribedElement">

+    <eAnnotations source="gmf.node">

+      <details key="foo" value="bar"/>

+      <details key="label" value="name,type"/>

+      <details key="label.icon" value="false"/>

+      <details key="label.placement" value="external"/>

+      <details key="label.pattern" value="{0}:{1}"/>

+    </eAnnotations>

+    <eOperations name="setType">

+      <eParameters name="newType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass"/>

+      <eParameters name="initiator" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

+    </eOperations>

+    <eOperations name="updatePortName">

+      <eParameters name="singularPortName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    </eOperations>

+    <eOperations name="getSingularPortName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SinglePort" abstract="true" eSuperTypes="#//Port">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiPort" abstract="true" eSuperTypes="#//Port">

+    <eAnnotations source="gmf.node">

+      <details key="border.color" value="255,0,0"/>

+      <details key="border.width" value="10"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="InputPort" abstract="true" eSuperTypes="#//Port">

+    <eAnnotations source="gmf.node">

+      <details key="figure" value="rectangle"/>

+      <details key="size" value="20,20"/>

+    </eAnnotations>

+    <eOperations name="isMappingTarget" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>

+    <eOperations name="isRootPort" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="OutputPort" abstract="true" eSuperTypes="#//Port">

+    <eAnnotations source="gmf.node">

+      <details key="figure" value="ellipse"/>

+      <details key="size" value="20,20"/>

+    </eAnnotations>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleInputPort" eSuperTypes="#//SinglePort #//InputPort"/>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiInputPort" eSuperTypes="#//MultiPort #//InputPort"/>

+  <eClassifiers xsi:type="ecore:EClass" name="SingleOutputPort" eSuperTypes="#//SinglePort #//OutputPort"/>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiOutputPort" eSuperTypes="#//MultiPort #//OutputPort"/>

+  <eClassifiers xsi:type="ecore:EClass" name="PortMapping" abstract="true">

+    <eOperations name="getSource" eType="#//Port"/>

+    <eOperations name="getTarget" eType="#//InputPort"/>

+    <eOperations name="updatePortTypesAndNames">

+      <eParameters name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass"/>

+      <eParameters name="singularPortName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+    </eOperations>

+    <eOperations name="updateMappingNumber"/>

+    <eOperations name="updateVisualization"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SinglePortMapping" eSuperTypes="#//PortMapping">

+    <eAnnotations source="gmf.link">

+      <details key="source" value="source"/>

+      <details key="target" value="target"/>

+      <details key="style" value="dot"/>

+      <details key="width" value="2"/>

+      <details key="target.decoration" value="arrow"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//SinglePort"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//SingleInputPort"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiPortMapping" eSuperTypes="#//PortMapping">

+    <eAnnotations source="gmf.link">

+      <details key="source" value="source"/>

+      <details key="target" value="target"/>

+      <details key="style" value="dot"/>

+      <details key="width" value="2"/>

+      <details key="target.decoration" value="arrow"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//MultiPort"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//MultiInputPort"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MultiSinglePortMapping" eSuperTypes="#//PortMapping">

+    <eAnnotations source="gmf.link">

+      <details key="source" value="source"/>

+      <details key="target" value="target"/>

+      <details key="style" value="dot"/>

+      <details key="width" value="2"/>

+      <details key="target.decoration" value="arrow"/>

+      <details key="tool.small.bundle" value="name"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//MultiPort"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//SingleInputPort"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="MappingVisualization">

+    <eLiterals name="arrows"/>

+    <eLiterals name="coloredPorts" value="1"/>

+    <eLiterals name="indices" value="2"/>

+    <eLiterals name="arrowsAndColoredPorts" value="3"/>

+    <eLiterals name="arrowsAndIndices" value="4"/>

+  </eClassifiers>

+</ecore:EPackage>

diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.emf b/org.eclipse.emf.refactor.comrel/model/comrel.emf
new file mode 100644
index 0000000..3a5c54a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.emf
@@ -0,0 +1,300 @@
+@namespace(uri="http://comrel/0.1", prefix="comrel")
+@gmf(foo="bar")
+package comrel;
+
+@gmf.diagram(foo="bar", onefile="false")
+class CompositeRefactoring extends ModelRefactoring{
+    val RefactoringUnit[1] mainRefactoringUnit;
+    val PortMapping[*] portMappings;
+    val ModelRefactoring[*] modelRefactorings;
+    val Helper[*] helper;
+    attr MappingVisualization[1] mappingVisualization = 0;
+    attr String customInitialCondition;
+    attr String customFinalCondition;
+}
+
+abstract interface NamedElement {
+    attr String name;
+}
+
+abstract interface DescribedElement {

+   attr String description;

+}
+
+abstract class RefactoringUnit extends NamedElement {

+   op InputPort[*] getAllInputPorts();
+   attr int seqExecutionOrder;
+   op void setSeqExecutionOrder(int seqExecutionOrder, boolean superCall);
+   op void setName(String newName, boolean updateContainer);

+}
+
+class ModelRefactoring extends NamedElement, DescribedElement{
+	attr String[1] refId;
+	attr String[1] label;
+	attr String[1] namespaceUri;
+ 	val SingleInputPort[*] inputPorts;

+}
+
+@gmf.node(foo="bar",label.icon="false",label="label,type",label.pattern="{0}:{1}")
+class AtomicUnit extends RefactoringUnit {
+	@gmf.affixed(foo="bar")
+	val SingleInputPort[+] inputPorts;
+	attr String[1] unitId;
+	attr String[1] label;
+	attr String[1] namespaceUri;
+	readonly attr String type = "Atomic Unit";
+	ref ModelRefactoring[1] modelRefactoring;
+	attr boolean checkInitialConditionFlag = false;
+	attr boolean checkFinalConditionFlag = false;
+}
+
+abstract class CompositeUnit extends RefactoringUnit {

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type,lblStrict",label.pattern="{0}:{1} -{2}-")
+class SequentialUnit extends CompositeUnit {
+	@gmf.compartment(foo="bar")
+	val HelperUnit[*] helperUnits;

+  	@gmf.compartment(foo="bar")
+   	val RefactoringUnit[+] refactoringUnits;
+   	@gmf.affixed(foo="bar")
+	val InputPort[+] inputPorts;
+	attr boolean strict = true;
+	readonly attr String type = "Sequential Unit";
+	attr String lblStrict = "strict";
+	op void updateSeqExecutionOrder();

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type,spec",label.pattern="{0}:{1} -{2}-")
+class ConditionCheck extends NamedElement, DescribedElement { 
+	readonly attr String type = "Condition Check";

+	attr String spec;
+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type",label.pattern="{0}:{1}")
+class ConditionalUnit extends CompositeUnit {
+	@gmf.compartment(foo="bar")
+	val ConditionCheck[1] if;
+	@gmf.compartment(foo="bar")
+	val HelperUnit[*] helperUnits;
+	@gmf.compartment(foo="bar")
+	val RefactoringUnit[1] then;
+	@gmf.compartment(foo="bar")
+	val RefactoringUnit else;
+	@gmf.affixed(foo="bar")
+	val InputPort[+] inputPorts;
+	readonly attr String type = "Conditional Unit";

+}
+
+abstract class QueuedUnit extends CompositeUnit {

+	op void init();
+	attr boolean strict = true;
+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type,lblStrict",label.pattern="{0}:{1} -{2}-")
+class SingleQueuedUnit extends QueuedUnit {
+	@gmf.compartment(foo="bar")
+	val HelperUnit[*] helperUnits;
+	@gmf.compartment(foo="bar")
+   	val RefactoringUnit[1] refactoringUnit;
+   	@gmf.affixed(foo="bar")
+	val SingleInputPort[*] singleInputPorts;

+   	@gmf.affixed(foo="bar")
+   	val MultiInputPort[1] multiInputPort;
+	readonly attr String type = "Single Queued Unit";
+	attr String lblStrict = "strict";

+}
+
+abstract class TwicedQueuedUnit extends QueuedUnit {
+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type,lblStrict",label.pattern="{0}:{1} -{2}-")
+class CartesianQueuedUnit extends TwicedQueuedUnit {
+	@gmf.compartment(foo="bar")
+	val HelperUnit[*] helperUnits;
+	@gmf.compartment(foo="bar")
+   	val RefactoringUnit[1] refactoringUnit;
+   	@gmf.affixed(foo="bar")
+	val SingleInputPort[*] singleInputPorts;
+	@gmf.affixed(foo="bar")
+   	unique val MultiInputPort[2] multiInputPorts;
+	readonly attr String type = "Cartesian Queued Unit";
+	attr String lblStrict = "strict";

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type,lblStrict",label.pattern="{0}:{1} -{2}-")
+class ParallelQueuedUnit extends TwicedQueuedUnit {
+	@gmf.compartment(foo="bar")
+	val HelperUnit[*] helperUnits;
+	@gmf.compartment(foo="bar")
+   	val RefactoringUnit[1] refactoringUnits;
+   	@gmf.affixed(foo="bar")
+	val SingleInputPort[*] singleInputPorts;
+	@gmf.affixed(foo="bar")
+   	unique val MultiInputPort[2] multiInputPorts;
+	readonly attr String type = "Parallel Queued Unit";
+	attr String lblStrict = "strict";
+}
+
+abstract class HelperUnit extends NamedElement, DescribedElement {
+	attr String[1] helperUnitId;
+	attr String[1] namespaceUri;
+	op InputPort[1] getInputPort();
+	op OutputPort[1] getOutputPort();

+}
+
+abstract class FeatureUnit extends HelperUnit {

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type",label.pattern="{0}:{1}")
+class SingleFeatureUnit extends FeatureUnit {
+	@gmf.affixed(foo="bar")
+	val SingleInputPort[1] inputPort;
+	@gmf.affixed(foo="bar")
+	val MultiInputPort[*] secondaryInputPorts;
+   	@gmf.affixed(foo="bar")
+	val SingleOutputPort[1] outputPort;
+	ref SingleFeatureHelper[1] singleFeatureHelper;
+	readonly attr String type = "Single Feature Unit";

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type",label.pattern="{0}:{1}")
+class MultiFeatureUnit extends FeatureUnit {
+	@gmf.affixed(foo="bar")
+	val SingleInputPort[1] inputPort;
+	@gmf.affixed(foo="bar")
+	val MultiInputPort[*] secondaryInputPorts;
+   	@gmf.affixed(foo="bar")
+	val MultiOutputPort[1] outputPort;
+	ref MultiFeatureHelper[1] multiFeatureHelper;
+	readonly attr String type = "Multi Feature Unit";

+}
+
+abstract class FilterUnit extends HelperUnit {

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type",label.pattern="{0}:{1}")
+class SingleFilterUnit extends FilterUnit{
+	@gmf.affixed(foo="bar")
+	val MultiInputPort[1] inputPort;

+    @gmf.affixed(foo="bar")
+	val SingleOutputPort[1] outputPort;
+	ref SingleFilterHelper[1] singleFilterHelper;
+	readonly attr String type = "Single Filter Unit";

+}
+
+@gmf.node(foo="bar",label.icon="false",label="name,type",label.pattern="{0}:{1}")
+class MultiFilterUnit extends FilterUnit{
+	@gmf.affixed(foo="bar")
+	val MultiInputPort[1] inputPort;
+  	@gmf.affixed(foo="bar")
+	val MultiOutputPort[1] outputPort;
+	ref MultiFilterHelper[1] multiFilterHelper;
+	readonly attr String type = "Multi Filter Unit";

+}
+
+abstract class Helper extends NamedElement, DescribedElement{
+	attr String[1] helperId;
+	attr String[1] namespaceUri;

+}
+
+abstract class FeatureHelper extends Helper{  
+	val SingleInputPort[1] inputPort;
+	val MultiInputPort[*] secondaryInputPorts;

+}
+
+class SingleFeatureHelper extends FeatureHelper{ 
+	val SingleOutputPort[1] outputPort; 

+}
+
+class MultiFeatureHelper extends FeatureHelper{
+	val MultiOutputPort[1] outputPort;

+}
+
+abstract class FilterHelper extends Helper{
+	val MultiInputPort[1] inputPort;
+	

+}
+
+class SingleFilterHelper extends FilterHelper{

+   val SingleOutputPort[1] outputPort;

+}
+
+class MultiFilterHelper extends FilterHelper{

+   val MultiOutputPort[1] outputPort;

+}
+
+@gmf.node(foo="bar",label="name,type",label.icon="false",label.placement="external",label.pattern="{0}:{1}")
+abstract class Port extends NamedElement, DescribedElement {
+	attr Class[1] type;
+	op void setType(Class newType, boolean initiator);
+	op void updatePortName(String singularPortName);
+	op String getSingularPortName();
+}
+
+
+abstract class SinglePort extends Port{
+	attr Object value;

+}
+
+@gmf.node(border.color="255,0,0",border.width="10")
+abstract class MultiPort extends Port{
+	attr Object[*] value;

+}
+
+@gmf.node(figure="rectangle", size="20,20")
+abstract class InputPort extends Port{  
+	op Boolean isMappingTarget();
+	op Boolean isRootPort();

+}
+
+@gmf.node(figure="ellipse",size="20,20")
+abstract class OutputPort extends Port{

+}
+
+class SingleInputPort extends SinglePort, InputPort{

+}
+
+class MultiInputPort extends MultiPort, InputPort{
+}
+
+class SingleOutputPort extends SinglePort, OutputPort{
+}
+
+class MultiOutputPort extends MultiPort, OutputPort{
+}
+
+abstract class PortMapping {
+	op Port getSource();
+	op InputPort getTarget();
+	op void updatePortTypesAndNames(Class type, String singularPortName);
+	op void updateMappingNumber();
+	op void updateVisualization();

+}
+
+@gmf.link(source="source", target="target", style="dot", width="2",target.decoration="arrow")
+class SinglePortMapping extends PortMapping {

+   ref SinglePort source;
+   ref SingleInputPort target;

+}
+
+@gmf.link(source="source", target="target", style="dot", width="2", target.decoration="arrow")
+class MultiPortMapping extends PortMapping {
+   ref MultiPort source;
+   ref MultiInputPort target;
+   
+}
+
+@gmf.link(source="source", target="target", style="dot", width="2",target.decoration="arrow",tool.small.bundle="name")
+class MultiSinglePortMapping extends PortMapping {
+   ref MultiPort source;
+   ref SingleInputPort target;
+}
+
+enum MappingVisualization {

+   arrows = 0;
+   coloredPorts = 1;
+   indices = 2;
+   arrowsAndColoredPorts = 3;  
+   arrowsAndIndices = 4;

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.genmodel b/org.eclipse.emf.refactor.comrel/model/comrel.genmodel
new file mode 100644
index 0000000..06e2d43
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.genmodel
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<genmodel:GenModel xmi:version="2.0"

+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"

+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/comrel/src"

+    modelPluginID="comrel" modelName="Comrel" importerID="org.eclipse.emf.importer.ecore"

+    complianceLevel="6.0" copyrightFields="false">

+  <foreignModel>comrel.ecore</foreignModel>

+  <genPackages prefix="Comrel" disposableProviderFactory="true" ecorePackage="comrel.ecore#/">

+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="comrel.ecore#//MappingVisualization">

+      <genEnumLiterals ecoreEnumLiteral="comrel.ecore#//MappingVisualization/arrows"/>

+      <genEnumLiterals ecoreEnumLiteral="comrel.ecore#//MappingVisualization/coloredPorts"/>

+      <genEnumLiterals ecoreEnumLiteral="comrel.ecore#//MappingVisualization/indices"/>

+      <genEnumLiterals ecoreEnumLiteral="comrel.ecore#//MappingVisualization/arrowsAndColoredPorts"/>

+      <genEnumLiterals ecoreEnumLiteral="comrel.ecore#//MappingVisualization/arrowsAndIndices"/>

+    </genEnums>

+    <genClasses ecoreClass="comrel.ecore#//CompositeRefactoring">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CompositeRefactoring/portMappings"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CompositeRefactoring/modelRefactorings"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CompositeRefactoring/helper"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//CompositeRefactoring/mappingVisualization"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//CompositeRefactoring/customInitialCondition"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//CompositeRefactoring/customFinalCondition"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//NamedElement">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//NamedElement/name"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//DescribedElement">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//DescribedElement/description"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//RefactoringUnit">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//RefactoringUnit/seqExecutionOrder"/>

+      <genOperations ecoreOperation="comrel.ecore#//RefactoringUnit/getAllInputPorts"/>

+      <genOperations ecoreOperation="comrel.ecore#//RefactoringUnit/setSeqExecutionOrder">

+        <genParameters ecoreParameter="comrel.ecore#//RefactoringUnit/setSeqExecutionOrder/seqExecutionOrder"/>

+        <genParameters ecoreParameter="comrel.ecore#//RefactoringUnit/setSeqExecutionOrder/superCall"/>

+      </genOperations>

+      <genOperations ecoreOperation="comrel.ecore#//RefactoringUnit/setName">

+        <genParameters ecoreParameter="comrel.ecore#//RefactoringUnit/setName/newName"/>

+        <genParameters ecoreParameter="comrel.ecore#//RefactoringUnit/setName/updateContainer"/>

+      </genOperations>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//ModelRefactoring">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ModelRefactoring/refId"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ModelRefactoring/label"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ModelRefactoring/namespaceUri"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ModelRefactoring/inputPorts"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//AtomicUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//AtomicUnit/inputPorts"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//AtomicUnit/unitId"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//AtomicUnit/label"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//AtomicUnit/namespaceUri"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//AtomicUnit/type"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//AtomicUnit/modelRefactoring"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//AtomicUnit/checkInitialConditionFlag"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//AtomicUnit/checkFinalConditionFlag"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//CompositeUnit"/>

+    <genClasses ecoreClass="comrel.ecore#//SequentialUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SequentialUnit/helperUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SequentialUnit/inputPorts"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SequentialUnit/strict"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SequentialUnit/type"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SequentialUnit/lblStrict"/>

+      <genOperations ecoreOperation="comrel.ecore#//SequentialUnit/updateSeqExecutionOrder"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//ConditionCheck">

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ConditionCheck/type"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ConditionCheck/spec"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//ConditionalUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ConditionalUnit/if"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ConditionalUnit/helperUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ConditionalUnit/then"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ConditionalUnit/else"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ConditionalUnit/inputPorts"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ConditionalUnit/type"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//QueuedUnit">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//QueuedUnit/strict"/>

+      <genOperations ecoreOperation="comrel.ecore#//QueuedUnit/init"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//SingleQueuedUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleQueuedUnit/helperUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleQueuedUnit/singleInputPorts"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleQueuedUnit/multiInputPort"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SingleQueuedUnit/type"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SingleQueuedUnit/lblStrict"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//TwicedQueuedUnit"/>

+    <genClasses ecoreClass="comrel.ecore#//CartesianQueuedUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CartesianQueuedUnit/helperUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CartesianQueuedUnit/singleInputPorts"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//CartesianQueuedUnit/multiInputPorts"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//CartesianQueuedUnit/type"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//CartesianQueuedUnit/lblStrict"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//ParallelQueuedUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ParallelQueuedUnit/helperUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ParallelQueuedUnit/singleInputPorts"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//ParallelQueuedUnit/multiInputPorts"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ParallelQueuedUnit/type"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//ParallelQueuedUnit/lblStrict"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//HelperUnit">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//HelperUnit/helperUnitId"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//HelperUnit/namespaceUri"/>

+      <genOperations ecoreOperation="comrel.ecore#//HelperUnit/getInputPort"/>

+      <genOperations ecoreOperation="comrel.ecore#//HelperUnit/getOutputPort"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//FeatureUnit"/>

+    <genClasses ecoreClass="comrel.ecore#//SingleFeatureUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFeatureUnit/inputPort"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFeatureUnit/secondaryInputPorts"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFeatureUnit/outputPort"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFeatureUnit/singleFeatureHelper"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SingleFeatureUnit/type"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//MultiFeatureUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFeatureUnit/inputPort"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFeatureUnit/secondaryInputPorts"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFeatureUnit/outputPort"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFeatureUnit/multiFeatureHelper"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//MultiFeatureUnit/type"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//FilterUnit"/>

+    <genClasses ecoreClass="comrel.ecore#//SingleFilterUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFilterUnit/inputPort"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFilterUnit/outputPort"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFilterUnit/singleFilterHelper"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SingleFilterUnit/type"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//MultiFilterUnit">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFilterUnit/inputPort"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFilterUnit/outputPort"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFilterUnit/multiFilterHelper"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//MultiFilterUnit/type"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//Helper">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//Helper/helperId"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//Helper/namespaceUri"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//FeatureHelper">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//FeatureHelper/inputPort"/>

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//FeatureHelper/secondaryInputPorts"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//SingleFeatureHelper">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFeatureHelper/outputPort"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//MultiFeatureHelper">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFeatureHelper/outputPort"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//FilterHelper">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//FilterHelper/inputPort"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//SingleFilterHelper">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//SingleFilterHelper/outputPort"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//MultiFilterHelper">

+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiFilterHelper/outputPort"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//Port">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//Port/type"/>

+      <genOperations ecoreOperation="comrel.ecore#//Port/setType">

+        <genParameters ecoreParameter="comrel.ecore#//Port/setType/newType"/>

+        <genParameters ecoreParameter="comrel.ecore#//Port/setType/initiator"/>

+      </genOperations>

+      <genOperations ecoreOperation="comrel.ecore#//Port/updatePortName">

+        <genParameters ecoreParameter="comrel.ecore#//Port/updatePortName/singularPortName"/>

+      </genOperations>

+      <genOperations ecoreOperation="comrel.ecore#//Port/getSingularPortName"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//SinglePort">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//SinglePort/value"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//MultiPort">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute comrel.ecore#//MultiPort/value"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//InputPort">

+      <genOperations ecoreOperation="comrel.ecore#//InputPort/isMappingTarget"/>

+      <genOperations ecoreOperation="comrel.ecore#//InputPort/isRootPort"/>

+    </genClasses>

+    <genClasses image="false" ecoreClass="comrel.ecore#//OutputPort"/>

+    <genClasses ecoreClass="comrel.ecore#//SingleInputPort"/>

+    <genClasses ecoreClass="comrel.ecore#//MultiInputPort"/>

+    <genClasses ecoreClass="comrel.ecore#//SingleOutputPort"/>

+    <genClasses ecoreClass="comrel.ecore#//MultiOutputPort"/>

+    <genClasses image="false" ecoreClass="comrel.ecore#//PortMapping">

+      <genOperations ecoreOperation="comrel.ecore#//PortMapping/getSource"/>

+      <genOperations ecoreOperation="comrel.ecore#//PortMapping/getTarget"/>

+      <genOperations ecoreOperation="comrel.ecore#//PortMapping/updatePortTypesAndNames">

+        <genParameters ecoreParameter="comrel.ecore#//PortMapping/updatePortTypesAndNames/type"/>

+        <genParameters ecoreParameter="comrel.ecore#//PortMapping/updatePortTypesAndNames/singularPortName"/>

+      </genOperations>

+      <genOperations ecoreOperation="comrel.ecore#//PortMapping/updateMappingNumber"/>

+      <genOperations ecoreOperation="comrel.ecore#//PortMapping/updateVisualization"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//SinglePortMapping">

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//SinglePortMapping/source"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//SinglePortMapping/target"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//MultiPortMapping">

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiPortMapping/source"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiPortMapping/target"/>

+    </genClasses>

+    <genClasses ecoreClass="comrel.ecore#//MultiSinglePortMapping">

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiSinglePortMapping/source"/>

+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference comrel.ecore#//MultiSinglePortMapping/target"/>

+    </genClasses>

+  </genPackages>

+</genmodel:GenModel>

diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.gmfgen b/org.eclipse.emf.refactor.comrel/model/comrel.gmfgen
new file mode 100644
index 0000000..fb41165
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.gmfgen
@@ -0,0 +1,8823 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<gmfgen:GenEditorGenerator xmi:version="2.0"

+    xmlns:xmi="http://www.omg.org/XMI"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xmlns:gmfgen="http://www.eclipse.org/gmf/2009/GenModel" copyrightText="">

+  <diagram

+      visualID="1000"

+      editPartClassName="CompositeRefactoringEditPart"

+      itemSemanticEditPolicyClassName="CompositeRefactoringItemSemanticEditPolicy"

+      canonicalEditPolicyClassName="CompositeRefactoringCanonicalEditPolicy"

+      iconProviderPriority="Low"

+      validationProviderPriority="Low"

+      validationEnabled="true"

+      validationDecorators="true"

+      liveValidationUIFeedback="true">

+    <diagramRunTimeClass

+        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>

+    <elementType

+        xsi:type="gmfgen:MetamodelType"

+        editHelperClassName="CompositeRefactoringEditHelper"/>

+    <viewmap

+        xsi:type="gmfgen:FigureViewmap"

+        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>

+    <containsShortcutsTo>comrel</containsShortcutsTo>

+    <shortcutsProvidedFor>comrel</shortcutsProvidedFor>

+    <domainDiagramElement

+        href="comrel.genmodel#//comrel/CompositeRefactoring"/>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3001"

+        editPartClassName="SingleInputPort2EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort2CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort2GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort2CreateCommand"

+        containers="//@diagram/@topLevelNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.6 //@diagram/@childNodes.24 //@diagram/@childNodes.28 //@diagram/@childNodes.32 //@diagram/@childNodes.46">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/singleInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/singleInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5002"

+          editPartClassName="SingleInputPortNameType2EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3002"

+        editPartClassName="MultiInputPortEditPart"

+        itemSemanticEditPolicyClassName="MultiInputPortItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPortCanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPortGraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPortCreateCommand"

+        containers="//@diagram/@topLevelNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.6 //@diagram/@childNodes.24 //@diagram/@childNodes.28 //@diagram/@childNodes.32 //@diagram/@childNodes.46">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="MultiInputPortEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/multiInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/multiInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5003"

+          editPartClassName="MultiInputPortNameTypeEditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3003"

+        editPartClassName="CartesianQueuedUnit2EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.2 //@diagram/@compartments.3"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnit2CreateCommand"

+        containers="//@diagram/@compartments.3 //@diagram/@compartments.7 //@diagram/@compartments.11 //@diagram/@compartments.15 //@diagram/@compartments.21 //@diagram/@compartments.39 //@diagram/@compartments.1">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5079"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrict2EditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrict2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3004"

+        editPartClassName="ParallelQueuedUnit2EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.4 //@diagram/@compartments.5"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnit2CreateCommand"

+        containers="//@diagram/@compartments.7 //@diagram/@compartments.11 //@diagram/@compartments.15 //@diagram/@compartments.21 //@diagram/@compartments.39 //@diagram/@compartments.3 //@diagram/@compartments.1">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="ParallelQueuedUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5078"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrict2EditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrict2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3005"

+        editPartClassName="SingleInputPort3EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort3CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort3GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort3CreateCommand"

+        containers="//@diagram/@childNodes.3 //@diagram/@childNodes.35 //@diagram/@childNodes.36 //@diagram/@childNodes.42 //@diagram/@childNodes.44 //@diagram/@childNodes.47 //@diagram/@topLevelNodes.2">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/singleInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/singleInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5004"

+          editPartClassName="SingleInputPortNameType3EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3006"

+        editPartClassName="MultiInputPort2EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort2CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort2GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort2CreateCommand"

+        containers="//@diagram/@childNodes.3 //@diagram/@childNodes.35 //@diagram/@childNodes.36 //@diagram/@childNodes.42 //@diagram/@childNodes.44 //@diagram/@childNodes.47 //@diagram/@topLevelNodes.2">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/multiInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/multiInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5005"

+          editPartClassName="MultiInputPortNameType2EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3007"

+        editPartClassName="CartesianQueuedUnit3EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.6 //@diagram/@compartments.7"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnit3CreateCommand"

+        containers="//@diagram/@compartments.23 //@diagram/@compartments.25 //@diagram/@compartments.29 //@diagram/@compartments.33 //@diagram/@compartments.41 //@diagram/@compartments.5 //@diagram/@compartments.75">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5077"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrict3EditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrict3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3008"

+        editPartClassName="SingleFeatureUnitEditPart"

+        itemSemanticEditPolicyClassName="SingleFeatureUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFeatureUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.8 //@diagram/@childNodes.9 //@diagram/@childNodes.10"

+        graphicalNodeEditPolicyClassName="SingleFeatureUnitGraphicalNodeEditPolicy"

+        createCommandClassName="SingleFeatureUnitCreateCommand"

+        containers="//@diagram/@compartments.6 //@diagram/@compartments.10 //@diagram/@compartments.14 //@diagram/@compartments.20 //@diagram/@compartments.38 //@diagram/@compartments.2 //@diagram/@compartments.0">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SingleFeatureUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFeatureUnitLabelFigure.setText(&quot;SingleFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5009"

+          editPartClassName="SingleFeatureUnitNameTypeEditPart"

+          itemSemanticEditPolicyClassName="SingleFeatureUnitNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3009"

+        editPartClassName="SingleInputPort4EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort4CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort4GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort4CreateCommand"

+        containers="//@diagram/@childNodes.7 //@diagram/@childNodes.37 //@diagram/@childNodes.49 //@diagram/@childNodes.54 //@diagram/@childNodes.60">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleFeatureUnit/inputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleFeatureUnit/inputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5006"

+          editPartClassName="SingleInputPortNameType4EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3010"

+        editPartClassName="MultiInputPort3EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort3CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort3GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort3CreateCommand"

+        containers="//@diagram/@childNodes.7 //@diagram/@childNodes.37 //@diagram/@childNodes.49 //@diagram/@childNodes.54 //@diagram/@childNodes.60">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleFeatureUnit/secondaryInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleFeatureUnit/secondaryInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5007"

+          editPartClassName="MultiInputPortNameType3EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3011"

+        editPartClassName="SingleOutputPortEditPart"

+        itemSemanticEditPolicyClassName="SingleOutputPortItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleOutputPortViewFactory"

+        canonicalEditPolicyClassName="SingleOutputPortCanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleOutputPortGraphicalNodeEditPolicy"

+        createCommandClassName="SingleOutputPortCreateCommand"

+        containers="//@diagram/@childNodes.7 //@diagram/@childNodes.37 //@diagram/@childNodes.49 //@diagram/@childNodes.54 //@diagram/@childNodes.60">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SingleOutputPortEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleOutputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleOutputPortFigure extends org.eclipse.draw2d.Ellipse {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleOutputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleOutputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleFeatureUnit/outputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleFeatureUnit/outputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5008"

+          editPartClassName="SingleOutputPortNameTypeEditPart"

+          itemSemanticEditPolicyClassName="SingleOutputPortNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleOutputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleOutputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleOutputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleOutputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleOutputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3012"

+        editPartClassName="MultiFeatureUnitEditPart"

+        itemSemanticEditPolicyClassName="MultiFeatureUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFeatureUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.12 //@diagram/@childNodes.13 //@diagram/@childNodes.14"

+        graphicalNodeEditPolicyClassName="MultiFeatureUnitGraphicalNodeEditPolicy"

+        createCommandClassName="MultiFeatureUnitCreateCommand"

+        containers="//@diagram/@compartments.6 //@diagram/@compartments.10 //@diagram/@compartments.14 //@diagram/@compartments.20 //@diagram/@compartments.38 //@diagram/@compartments.2 //@diagram/@compartments.0">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="MultiFeatureUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFeatureUnitLabelFigure.setText(&quot;MultiFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5013"

+          editPartClassName="MultiFeatureUnitNameTypeEditPart"

+          itemSemanticEditPolicyClassName="MultiFeatureUnitNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3013"

+        editPartClassName="SingleInputPort5EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort5CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort5GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort5CreateCommand"

+        containers="//@diagram/@childNodes.11 //@diagram/@childNodes.38 //@diagram/@childNodes.50 //@diagram/@childNodes.55 //@diagram/@childNodes.61">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/MultiFeatureUnit/inputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/MultiFeatureUnit/inputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5010"

+          editPartClassName="SingleInputPortNameType5EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3014"

+        editPartClassName="MultiInputPort4EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort4CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort4GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort4CreateCommand"

+        containers="//@diagram/@childNodes.11 //@diagram/@childNodes.38 //@diagram/@childNodes.50 //@diagram/@childNodes.55 //@diagram/@childNodes.61">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/MultiFeatureUnit/secondaryInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/MultiFeatureUnit/secondaryInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5011"

+          editPartClassName="MultiInputPortNameType4EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3015"

+        editPartClassName="MultiOutputPortEditPart"

+        itemSemanticEditPolicyClassName="MultiOutputPortItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiOutputPortViewFactory"

+        canonicalEditPolicyClassName="MultiOutputPortCanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiOutputPortGraphicalNodeEditPolicy"

+        createCommandClassName="MultiOutputPortCreateCommand"

+        containers="//@diagram/@childNodes.11 //@diagram/@childNodes.38 //@diagram/@childNodes.50 //@diagram/@childNodes.55 //@diagram/@childNodes.61">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="MultiOutputPortEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiOutputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiOutputPortFigure extends org.eclipse.draw2d.Ellipse {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiOutputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiOutputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/MultiFeatureUnit/outputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/MultiFeatureUnit/outputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5012"

+          editPartClassName="MultiOutputPortNameTypeEditPart"

+          itemSemanticEditPolicyClassName="MultiOutputPortNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiOutputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiOutputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiOutputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiOutputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiOutputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3016"

+        editPartClassName="SingleFilterUnitEditPart"

+        itemSemanticEditPolicyClassName="SingleFilterUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFilterUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFilterUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.16 //@diagram/@childNodes.17"

+        graphicalNodeEditPolicyClassName="SingleFilterUnitGraphicalNodeEditPolicy"

+        createCommandClassName="SingleFilterUnitCreateCommand"

+        containers="//@diagram/@compartments.6 //@diagram/@compartments.10 //@diagram/@compartments.14 //@diagram/@compartments.20 //@diagram/@compartments.38 //@diagram/@compartments.2 //@diagram/@compartments.0">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SingleFilterUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFilterUnitLabelFigure.setText(&quot;SingleFilterUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5016"

+          editPartClassName="SingleFilterUnitNameTypeEditPart"

+          itemSemanticEditPolicyClassName="SingleFilterUnitNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3017"

+        editPartClassName="MultiInputPort5EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort5CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort5GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort5CreateCommand"

+        containers="//@diagram/@childNodes.15 //@diagram/@childNodes.39 //@diagram/@childNodes.51 //@diagram/@childNodes.56 //@diagram/@childNodes.62">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleFilterUnit/inputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleFilterUnit/inputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5014"

+          editPartClassName="MultiInputPortNameType5EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3018"

+        editPartClassName="SingleOutputPort2EditPart"

+        itemSemanticEditPolicyClassName="SingleOutputPort2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleOutputPortViewFactory"

+        canonicalEditPolicyClassName="SingleOutputPort2CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleOutputPort2GraphicalNodeEditPolicy"

+        createCommandClassName="SingleOutputPort2CreateCommand"

+        containers="//@diagram/@childNodes.15 //@diagram/@childNodes.39 //@diagram/@childNodes.51 //@diagram/@childNodes.56 //@diagram/@childNodes.62">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.10/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleOutputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleOutputPortFigure extends org.eclipse.draw2d.Ellipse {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleOutputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleOutputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleFilterUnit/outputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleFilterUnit/outputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5015"

+          editPartClassName="SingleOutputPortNameType2EditPart"

+          itemSemanticEditPolicyClassName="SingleOutputPortNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleOutputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleOutputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleOutputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleOutputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleOutputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3019"

+        editPartClassName="MultiFilterUnitEditPart"

+        itemSemanticEditPolicyClassName="MultiFilterUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFilterUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFilterUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.19 //@diagram/@childNodes.20"

+        graphicalNodeEditPolicyClassName="MultiFilterUnitGraphicalNodeEditPolicy"

+        createCommandClassName="MultiFilterUnitCreateCommand"

+        containers="//@diagram/@compartments.6 //@diagram/@compartments.10 //@diagram/@compartments.14 //@diagram/@compartments.20 //@diagram/@compartments.38 //@diagram/@compartments.2 //@diagram/@compartments.0">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="MultiFilterUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFilterUnitLabelFigure.setText(&quot;MultiFilterUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5019"

+          editPartClassName="MultiFilterUnitNameTypeEditPart"

+          itemSemanticEditPolicyClassName="MultiFilterUnitNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3020"

+        editPartClassName="MultiInputPort6EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort6CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort6GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort6CreateCommand"

+        containers="//@diagram/@childNodes.18 //@diagram/@childNodes.40 //@diagram/@childNodes.52 //@diagram/@childNodes.57 //@diagram/@childNodes.63">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/MultiFilterUnit/inputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/MultiFilterUnit/inputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5017"

+          editPartClassName="MultiInputPortNameType6EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3021"

+        editPartClassName="MultiOutputPort2EditPart"

+        itemSemanticEditPolicyClassName="MultiOutputPort2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiOutputPortViewFactory"

+        canonicalEditPolicyClassName="MultiOutputPort2CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiOutputPort2GraphicalNodeEditPolicy"

+        createCommandClassName="MultiOutputPort2CreateCommand"

+        containers="//@diagram/@childNodes.18 //@diagram/@childNodes.40 //@diagram/@childNodes.52 //@diagram/@childNodes.57 //@diagram/@childNodes.63">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.14/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiOutputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiOutputPortFigure extends org.eclipse.draw2d.Ellipse {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiOutputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiOutputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/MultiFilterUnit/outputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/MultiFilterUnit/outputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5018"

+          editPartClassName="MultiOutputPortNameType2EditPart"

+          itemSemanticEditPolicyClassName="MultiOutputPortNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiOutputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiOutputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiOutputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiOutputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiOutputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3022"

+        editPartClassName="SingleQueuedUnit2EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.8 //@diagram/@compartments.9"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnit2CreateCommand"

+        containers="//@diagram/@compartments.11 //@diagram/@compartments.15 //@diagram/@compartments.21 //@diagram/@compartments.39 //@diagram/@compartments.7 //@diagram/@compartments.3 //@diagram/@compartments.1">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SingleQueuedUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5076"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrict2EditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrict2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3023"

+        editPartClassName="SingleInputPort6EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort6CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort6GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort6CreateCommand"

+        containers="//@diagram/@childNodes.21 //@diagram/@childNodes.41 //@diagram/@childNodes.53 //@diagram/@childNodes.58 //@diagram/@childNodes.64 //@diagram/@childNodes.66 //@diagram/@topLevelNodes.3">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/singleInputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/singleInputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5020"

+          editPartClassName="SingleInputPortNameType6EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3024"

+        editPartClassName="MultiInputPort7EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort7CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort7GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort7CreateCommand"

+        containers="//@diagram/@childNodes.21 //@diagram/@childNodes.41 //@diagram/@childNodes.53 //@diagram/@childNodes.58 //@diagram/@childNodes.64 //@diagram/@childNodes.66 //@diagram/@topLevelNodes.3">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/multiInputPort"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/multiInputPort"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5021"

+          editPartClassName="MultiInputPortNameType7EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3025"

+        editPartClassName="CartesianQueuedUnit4EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.10 //@diagram/@compartments.11"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnit4CreateCommand"

+        containers="//@diagram/@compartments.27 //@diagram/@compartments.43 //@diagram/@compartments.45 //@diagram/@compartments.49 //@diagram/@compartments.55 //@diagram/@compartments.9 //@diagram/@compartments.77">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5075"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrict4EditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrict4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3026"

+        editPartClassName="SequentialUnit2EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.12 //@diagram/@compartments.13"

+        graphicalNodeEditPolicyClassName="SequentialUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnit2CreateCommand"

+        containers="//@diagram/@compartments.15 //@diagram/@compartments.21 //@diagram/@compartments.39 //@diagram/@compartments.11 //@diagram/@compartments.7 //@diagram/@compartments.3 //@diagram/@compartments.1">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SequentialUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5074"

+          editPartClassName="SequentialUnitNameTypeLblStrict2EditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrict2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3027"

+        editPartClassName="SingleInputPort7EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort7CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort7GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort7CreateCommand"

+        containers="//@diagram/@childNodes.25 //@diagram/@childNodes.43 //@diagram/@childNodes.59 //@diagram/@childNodes.68 //@diagram/@childNodes.69 //@diagram/@childNodes.72 //@diagram/@topLevelNodes.4">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/inputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/inputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5022"

+          editPartClassName="SingleInputPortNameType7EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3028"

+        editPartClassName="MultiInputPort8EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort8ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort8CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort8GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort8CreateCommand"

+        containers="//@diagram/@childNodes.25 //@diagram/@childNodes.43 //@diagram/@childNodes.59 //@diagram/@childNodes.68 //@diagram/@childNodes.69 //@diagram/@childNodes.72 //@diagram/@topLevelNodes.4">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/inputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/inputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5023"

+          editPartClassName="MultiInputPortNameType8EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType8ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3029"

+        editPartClassName="CartesianQueuedUnit5EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.14 //@diagram/@compartments.15"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnit5CreateCommand"

+        containers="//@diagram/@compartments.31 //@diagram/@compartments.47 //@diagram/@compartments.57 //@diagram/@compartments.59 //@diagram/@compartments.69 //@diagram/@compartments.13 //@diagram/@compartments.79">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5073"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrict5EditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrict5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3030"

+        editPartClassName="ConditionalUnit2EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.16 //@diagram/@compartments.17 //@diagram/@compartments.18 //@diagram/@compartments.19"

+        graphicalNodeEditPolicyClassName="ConditionalUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnit2CreateCommand"

+        containers="//@diagram/@compartments.21 //@diagram/@compartments.39 //@diagram/@compartments.15 //@diagram/@compartments.11 //@diagram/@compartments.7 //@diagram/@compartments.3 //@diagram/@compartments.1">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="ConditionalUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5072"

+          editPartClassName="ConditionalUnitNameType2EditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3031"

+        editPartClassName="SingleInputPort8EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort8ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort8CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort8GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort8CreateCommand"

+        containers="//@diagram/@childNodes.29 //@diagram/@childNodes.45 //@diagram/@childNodes.65 //@diagram/@childNodes.70 //@diagram/@childNodes.71 //@diagram/@childNodes.74 //@diagram/@topLevelNodes.5">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/inputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/inputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5024"

+          editPartClassName="SingleInputPortNameType8EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType8ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3032"

+        editPartClassName="MultiInputPort9EditPart"

+        itemSemanticEditPolicyClassName="MultiInputPort9ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiInputPortViewFactory"

+        canonicalEditPolicyClassName="MultiInputPort9CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="MultiInputPort9GraphicalNodeEditPolicy"

+        createCommandClassName="MultiInputPort9CreateCommand"

+        containers="//@diagram/@childNodes.29 //@diagram/@childNodes.45 //@diagram/@childNodes.65 //@diagram/@childNodes.70 //@diagram/@childNodes.71 //@diagram/@childNodes.74 //@diagram/@topLevelNodes.5">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setLineWidth(10);&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 255, 0, 0);&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:StyleAttributes"

+            fixedForeground="true"/>

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/inputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/inputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5025"

+          editPartClassName="MultiInputPortNameType9EditPart"

+          itemSemanticEditPolicyClassName="MultiInputPortNameType9ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="MultiInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;MultiInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3033"

+        editPartClassName="CartesianQueuedUnit6EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnit6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnit6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.20 //@diagram/@compartments.21"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnit6GraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnit6CreateCommand"

+        containers="//@diagram/@compartments.18 //@diagram/@compartments.36 //@diagram/@compartments.52 //@diagram/@compartments.62 //@diagram/@compartments.66 //@diagram/@compartments.72 //@diagram/@compartments.82">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+      </modelFacet>

+      <labels

+          visualID="5028"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrict6EditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrict6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3034"

+        editPartClassName="AtomicUnit2EditPart"

+        itemSemanticEditPolicyClassName="AtomicUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnit2CreateCommand"

+        containers="//@diagram/@compartments.21 //@diagram/@compartments.39 //@diagram/@compartments.15 //@diagram/@compartments.11 //@diagram/@compartments.7 //@diagram/@compartments.3 //@diagram/@compartments.1">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="AtomicUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5027"

+          editPartClassName="AtomicUnitLabelType2EditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        xsi:type="gmfgen:GenChildSideAffixedNode"

+        visualID="3035"

+        editPartClassName="SingleInputPort9EditPart"

+        itemSemanticEditPolicyClassName="SingleInputPort9ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPort9CanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPort9GraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPort9CreateCommand"

+        containers="//@diagram/@childNodes.33 //@diagram/@childNodes.48 //@diagram/@childNodes.67 //@diagram/@childNodes.73 //@diagram/@childNodes.76 //@diagram/@childNodes.77 //@diagram/@topLevelNodes.6">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.0/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/AtomicUnit/inputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/AtomicUnit/inputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5026"

+          editPartClassName="SingleInputPortNameType9EditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameType9ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3036"

+        editPartClassName="ParallelQueuedUnit3EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.22 //@diagram/@compartments.23"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnit3CreateCommand"

+        containers="//@diagram/@compartments.36 //@diagram/@compartments.52 //@diagram/@compartments.62 //@diagram/@compartments.66 //@diagram/@compartments.72 //@diagram/@compartments.18 //@diagram/@compartments.82">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.3/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+      </modelFacet>

+      <labels

+          visualID="5071"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrict3EditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrict3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3037"

+        editPartClassName="ParallelQueuedUnit4EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.24 //@diagram/@compartments.25"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnit4CreateCommand"

+        containers="//@diagram/@compartments.25 //@diagram/@compartments.29 //@diagram/@compartments.33 //@diagram/@compartments.41 //@diagram/@compartments.23 //@diagram/@compartments.5 //@diagram/@compartments.75">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.3/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5070"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrict4EditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrict4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3038"

+        editPartClassName="SingleFeatureUnit2EditPart"

+        itemSemanticEditPolicyClassName="SingleFeatureUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFeatureUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.8 //@diagram/@childNodes.9 //@diagram/@childNodes.10"

+        graphicalNodeEditPolicyClassName="SingleFeatureUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFeatureUnit2CreateCommand"

+        containers="//@diagram/@compartments.24 //@diagram/@compartments.28 //@diagram/@compartments.32 //@diagram/@compartments.40 //@diagram/@compartments.22 //@diagram/@compartments.4 //@diagram/@compartments.74">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.7/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFeatureUnitLabelFigure.setText(&quot;SingleFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5029"

+          editPartClassName="SingleFeatureUnitNameType2EditPart"

+          itemSemanticEditPolicyClassName="SingleFeatureUnitNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3039"

+        editPartClassName="MultiFeatureUnit2EditPart"

+        itemSemanticEditPolicyClassName="MultiFeatureUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFeatureUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.12 //@diagram/@childNodes.13 //@diagram/@childNodes.14"

+        graphicalNodeEditPolicyClassName="MultiFeatureUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFeatureUnit2CreateCommand"

+        containers="//@diagram/@compartments.24 //@diagram/@compartments.28 //@diagram/@compartments.32 //@diagram/@compartments.40 //@diagram/@compartments.22 //@diagram/@compartments.4 //@diagram/@compartments.74">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.11/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFeatureUnitLabelFigure.setText(&quot;MultiFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5030"

+          editPartClassName="MultiFeatureUnitNameType2EditPart"

+          itemSemanticEditPolicyClassName="MultiFeatureUnitNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3040"

+        editPartClassName="SingleFilterUnit2EditPart"

+        itemSemanticEditPolicyClassName="SingleFilterUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFilterUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFilterUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.16 //@diagram/@childNodes.17"

+        graphicalNodeEditPolicyClassName="SingleFilterUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFilterUnit2CreateCommand"

+        containers="//@diagram/@compartments.24 //@diagram/@compartments.28 //@diagram/@compartments.32 //@diagram/@compartments.40 //@diagram/@compartments.22 //@diagram/@compartments.4 //@diagram/@compartments.74">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.15/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFilterUnitLabelFigure.setText(&quot;SingleFilterUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5031"

+          editPartClassName="SingleFilterUnitNameType2EditPart"

+          itemSemanticEditPolicyClassName="SingleFilterUnitNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3041"

+        editPartClassName="MultiFilterUnit2EditPart"

+        itemSemanticEditPolicyClassName="MultiFilterUnit2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFilterUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFilterUnit2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.19 //@diagram/@childNodes.20"

+        graphicalNodeEditPolicyClassName="MultiFilterUnit2GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFilterUnit2CreateCommand"

+        containers="//@diagram/@compartments.24 //@diagram/@compartments.28 //@diagram/@compartments.32 //@diagram/@compartments.40 //@diagram/@compartments.22 //@diagram/@compartments.4 //@diagram/@compartments.74">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.18/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFilterUnitLabelFigure.setText(&quot;MultiFilterUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5032"

+          editPartClassName="MultiFilterUnitNameType2EditPart"

+          itemSemanticEditPolicyClassName="MultiFilterUnitNameType2ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3042"

+        editPartClassName="SingleQueuedUnit3EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.26 //@diagram/@compartments.27"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnit3CreateCommand"

+        containers="//@diagram/@compartments.29 //@diagram/@compartments.33 //@diagram/@compartments.41 //@diagram/@compartments.25 //@diagram/@compartments.23 //@diagram/@compartments.5 //@diagram/@compartments.75">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.21/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5069"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrict3EditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrict3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3043"

+        editPartClassName="ParallelQueuedUnit5EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.28 //@diagram/@compartments.29"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnit5CreateCommand"

+        containers="//@diagram/@compartments.43 //@diagram/@compartments.45 //@diagram/@compartments.49 //@diagram/@compartments.55 //@diagram/@compartments.27 //@diagram/@compartments.9 //@diagram/@compartments.77">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.3/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5068"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrict5EditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrict5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3044"

+        editPartClassName="SequentialUnit3EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.30 //@diagram/@compartments.31"

+        graphicalNodeEditPolicyClassName="SequentialUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnit3CreateCommand"

+        containers="//@diagram/@compartments.33 //@diagram/@compartments.41 //@diagram/@compartments.29 //@diagram/@compartments.25 //@diagram/@compartments.23 //@diagram/@compartments.5 //@diagram/@compartments.75">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.25/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5067"

+          editPartClassName="SequentialUnitNameTypeLblStrict3EditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrict3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3045"

+        editPartClassName="ParallelQueuedUnit6EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnit6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnit6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.32 //@diagram/@compartments.33"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnit6GraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnit6CreateCommand"

+        containers="//@diagram/@compartments.47 //@diagram/@compartments.57 //@diagram/@compartments.59 //@diagram/@compartments.69 //@diagram/@compartments.31 //@diagram/@compartments.13 //@diagram/@compartments.79">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.3/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5066"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrict6EditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrict6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3046"

+        editPartClassName="ConditionalUnit3EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.34 //@diagram/@compartments.35 //@diagram/@compartments.36 //@diagram/@compartments.37"

+        graphicalNodeEditPolicyClassName="ConditionalUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnit3CreateCommand"

+        containers="//@diagram/@compartments.41 //@diagram/@compartments.33 //@diagram/@compartments.29 //@diagram/@compartments.25 //@diagram/@compartments.23 //@diagram/@compartments.5 //@diagram/@compartments.75">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.29/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5065"

+          editPartClassName="ConditionalUnitNameType3EditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3047"

+        editPartClassName="CartesianQueuedUnit7EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnit7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnit7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.38 //@diagram/@compartments.39"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnit7GraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnit7CreateCommand"

+        containers="//@diagram/@compartments.37 //@diagram/@compartments.53 //@diagram/@compartments.63 //@diagram/@compartments.67 //@diagram/@compartments.73 //@diagram/@compartments.19 //@diagram/@compartments.83">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+      </modelFacet>

+      <labels

+          visualID="5033"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrict7EditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrict7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3048"

+        editPartClassName="ParallelQueuedUnit7EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnit7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnit7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.40 //@diagram/@compartments.41"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnit7GraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnit7CreateCommand"

+        containers="//@diagram/@compartments.37 //@diagram/@compartments.53 //@diagram/@compartments.63 //@diagram/@compartments.67 //@diagram/@compartments.73 //@diagram/@compartments.19 //@diagram/@compartments.83">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.3/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+      </modelFacet>

+      <labels

+          visualID="5035"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrict7EditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrict7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3049"

+        editPartClassName="AtomicUnit3EditPart"

+        itemSemanticEditPolicyClassName="AtomicUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnit3CreateCommand"

+        containers="//@diagram/@compartments.41 //@diagram/@compartments.33 //@diagram/@compartments.29 //@diagram/@compartments.25 //@diagram/@compartments.23 //@diagram/@compartments.5 //@diagram/@compartments.75">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.33/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5034"

+          editPartClassName="AtomicUnitLabelType3EditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3050"

+        editPartClassName="SingleFeatureUnit3EditPart"

+        itemSemanticEditPolicyClassName="SingleFeatureUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFeatureUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.8 //@diagram/@childNodes.9 //@diagram/@childNodes.10"

+        graphicalNodeEditPolicyClassName="SingleFeatureUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFeatureUnit3CreateCommand"

+        containers="//@diagram/@compartments.35 //@diagram/@compartments.51 //@diagram/@compartments.61 //@diagram/@compartments.65 //@diagram/@compartments.71 //@diagram/@compartments.17 //@diagram/@compartments.81">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.7/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFeatureUnitLabelFigure.setText(&quot;SingleFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5036"

+          editPartClassName="SingleFeatureUnitNameType3EditPart"

+          itemSemanticEditPolicyClassName="SingleFeatureUnitNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3051"

+        editPartClassName="MultiFeatureUnit3EditPart"

+        itemSemanticEditPolicyClassName="MultiFeatureUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFeatureUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.12 //@diagram/@childNodes.13 //@diagram/@childNodes.14"

+        graphicalNodeEditPolicyClassName="MultiFeatureUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFeatureUnit3CreateCommand"

+        containers="//@diagram/@compartments.35 //@diagram/@compartments.51 //@diagram/@compartments.61 //@diagram/@compartments.65 //@diagram/@compartments.71 //@diagram/@compartments.17 //@diagram/@compartments.81">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.11/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFeatureUnitLabelFigure.setText(&quot;MultiFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5037"

+          editPartClassName="MultiFeatureUnitNameType3EditPart"

+          itemSemanticEditPolicyClassName="MultiFeatureUnitNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3052"

+        editPartClassName="SingleFilterUnit3EditPart"

+        itemSemanticEditPolicyClassName="SingleFilterUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFilterUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFilterUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.16 //@diagram/@childNodes.17"

+        graphicalNodeEditPolicyClassName="SingleFilterUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFilterUnit3CreateCommand"

+        containers="//@diagram/@compartments.35 //@diagram/@compartments.51 //@diagram/@compartments.61 //@diagram/@compartments.65 //@diagram/@compartments.71 //@diagram/@compartments.17 //@diagram/@compartments.81">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.15/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFilterUnitLabelFigure.setText(&quot;SingleFilterUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5038"

+          editPartClassName="SingleFilterUnitNameType3EditPart"

+          itemSemanticEditPolicyClassName="SingleFilterUnitNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3053"

+        editPartClassName="MultiFilterUnit3EditPart"

+        itemSemanticEditPolicyClassName="MultiFilterUnit3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFilterUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFilterUnit3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.19 //@diagram/@childNodes.20"

+        graphicalNodeEditPolicyClassName="MultiFilterUnit3GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFilterUnit3CreateCommand"

+        containers="//@diagram/@compartments.35 //@diagram/@compartments.51 //@diagram/@compartments.61 //@diagram/@compartments.65 //@diagram/@compartments.71 //@diagram/@compartments.17 //@diagram/@compartments.81">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.18/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFilterUnitLabelFigure.setText(&quot;MultiFilterUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5039"

+          editPartClassName="MultiFilterUnitNameType3EditPart"

+          itemSemanticEditPolicyClassName="MultiFilterUnitNameType3ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3054"

+        editPartClassName="SingleQueuedUnit4EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.42 //@diagram/@compartments.43"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnit4CreateCommand"

+        containers="//@diagram/@compartments.52 //@diagram/@compartments.62 //@diagram/@compartments.66 //@diagram/@compartments.72 //@diagram/@compartments.36 //@diagram/@compartments.18 //@diagram/@compartments.82">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.21/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+      </modelFacet>

+      <labels

+          visualID="5064"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrict4EditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrict4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3055"

+        editPartClassName="SingleFeatureUnit4EditPart"

+        itemSemanticEditPolicyClassName="SingleFeatureUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFeatureUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.8 //@diagram/@childNodes.9 //@diagram/@childNodes.10"

+        graphicalNodeEditPolicyClassName="SingleFeatureUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFeatureUnit4CreateCommand"

+        containers="//@diagram/@compartments.42 //@diagram/@compartments.44 //@diagram/@compartments.48 //@diagram/@compartments.54 //@diagram/@compartments.26 //@diagram/@compartments.8 //@diagram/@compartments.76">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.7/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFeatureUnitLabelFigure.setText(&quot;SingleFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5040"

+          editPartClassName="SingleFeatureUnitNameType4EditPart"

+          itemSemanticEditPolicyClassName="SingleFeatureUnitNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3056"

+        editPartClassName="MultiFeatureUnit4EditPart"

+        itemSemanticEditPolicyClassName="MultiFeatureUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFeatureUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.12 //@diagram/@childNodes.13 //@diagram/@childNodes.14"

+        graphicalNodeEditPolicyClassName="MultiFeatureUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFeatureUnit4CreateCommand"

+        containers="//@diagram/@compartments.42 //@diagram/@compartments.44 //@diagram/@compartments.48 //@diagram/@compartments.54 //@diagram/@compartments.26 //@diagram/@compartments.8 //@diagram/@compartments.76">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.11/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFeatureUnitLabelFigure.setText(&quot;MultiFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5041"

+          editPartClassName="MultiFeatureUnitNameType4EditPart"

+          itemSemanticEditPolicyClassName="MultiFeatureUnitNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3057"

+        editPartClassName="SingleFilterUnit4EditPart"

+        itemSemanticEditPolicyClassName="SingleFilterUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFilterUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFilterUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.16 //@diagram/@childNodes.17"

+        graphicalNodeEditPolicyClassName="SingleFilterUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFilterUnit4CreateCommand"

+        containers="//@diagram/@compartments.42 //@diagram/@compartments.44 //@diagram/@compartments.48 //@diagram/@compartments.54 //@diagram/@compartments.26 //@diagram/@compartments.8 //@diagram/@compartments.76">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.15/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFilterUnitLabelFigure.setText(&quot;SingleFilterUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5042"

+          editPartClassName="SingleFilterUnitNameType4EditPart"

+          itemSemanticEditPolicyClassName="SingleFilterUnitNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3058"

+        editPartClassName="MultiFilterUnit4EditPart"

+        itemSemanticEditPolicyClassName="MultiFilterUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFilterUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFilterUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.19 //@diagram/@childNodes.20"

+        graphicalNodeEditPolicyClassName="MultiFilterUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFilterUnit4CreateCommand"

+        containers="//@diagram/@compartments.42 //@diagram/@compartments.44 //@diagram/@compartments.48 //@diagram/@compartments.54 //@diagram/@compartments.26 //@diagram/@compartments.8 //@diagram/@compartments.76">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.18/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFilterUnitLabelFigure.setText(&quot;MultiFilterUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5043"

+          editPartClassName="MultiFilterUnitNameType4EditPart"

+          itemSemanticEditPolicyClassName="MultiFilterUnitNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3059"

+        editPartClassName="SingleQueuedUnit5EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.44 //@diagram/@compartments.45"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnit5CreateCommand"

+        containers="//@diagram/@compartments.45 //@diagram/@compartments.49 //@diagram/@compartments.55 //@diagram/@compartments.43 //@diagram/@compartments.27 //@diagram/@compartments.9 //@diagram/@compartments.77">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.21/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5063"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrict5EditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrict5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3060"

+        editPartClassName="SequentialUnit4EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.46 //@diagram/@compartments.47"

+        graphicalNodeEditPolicyClassName="SequentialUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnit4CreateCommand"

+        containers="//@diagram/@compartments.49 //@diagram/@compartments.55 //@diagram/@compartments.45 //@diagram/@compartments.43 //@diagram/@compartments.27 //@diagram/@compartments.9 //@diagram/@compartments.77">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.25/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5062"

+          editPartClassName="SequentialUnitNameTypeLblStrict4EditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrict4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3061"

+        editPartClassName="SingleFeatureUnit5EditPart"

+        itemSemanticEditPolicyClassName="SingleFeatureUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFeatureUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.8 //@diagram/@childNodes.9 //@diagram/@childNodes.10"

+        graphicalNodeEditPolicyClassName="SingleFeatureUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFeatureUnit5CreateCommand"

+        containers="//@diagram/@compartments.46 //@diagram/@compartments.56 //@diagram/@compartments.58 //@diagram/@compartments.68 //@diagram/@compartments.30 //@diagram/@compartments.12 //@diagram/@compartments.78">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.7/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFeatureUnitLabelFigure.setText(&quot;SingleFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5044"

+          editPartClassName="SingleFeatureUnitNameType5EditPart"

+          itemSemanticEditPolicyClassName="SingleFeatureUnitNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3062"

+        editPartClassName="MultiFeatureUnit5EditPart"

+        itemSemanticEditPolicyClassName="MultiFeatureUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFeatureUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFeatureUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.12 //@diagram/@childNodes.13 //@diagram/@childNodes.14"

+        graphicalNodeEditPolicyClassName="MultiFeatureUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFeatureUnit5CreateCommand"

+        containers="//@diagram/@compartments.46 //@diagram/@compartments.56 //@diagram/@compartments.58 //@diagram/@compartments.68 //@diagram/@compartments.30 //@diagram/@compartments.12 //@diagram/@compartments.78">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.11/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFeatureUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFeatureUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFeatureUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFeatureUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFeatureUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFeatureUnitLabelFigure.setText(&quot;MultiFeatureUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFeatureUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFeatureUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFeatureUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFeatureUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5045"

+          editPartClassName="MultiFeatureUnitNameType5EditPart"

+          itemSemanticEditPolicyClassName="MultiFeatureUnitNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFeatureUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFeatureUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFeatureUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3063"

+        editPartClassName="SingleFilterUnit5EditPart"

+        itemSemanticEditPolicyClassName="SingleFilterUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleFilterUnitViewFactory"

+        canonicalEditPolicyClassName="SingleFilterUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.16 //@diagram/@childNodes.17"

+        graphicalNodeEditPolicyClassName="SingleFilterUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="SingleFilterUnit5CreateCommand"

+        containers="//@diagram/@compartments.46 //@diagram/@compartments.56 //@diagram/@compartments.58 //@diagram/@compartments.68 //@diagram/@compartments.30 //@diagram/@compartments.12 //@diagram/@compartments.78">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.15/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleFilterUnitLabelFigure.setText(&quot;SingleFilterUnit&quot;);&#xA;&#xA;this.add(fFigureSingleFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5046"

+          editPartClassName="SingleFilterUnitNameType5EditPart"

+          itemSemanticEditPolicyClassName="SingleFilterUnitNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3064"

+        editPartClassName="MultiFilterUnit5EditPart"

+        itemSemanticEditPolicyClassName="MultiFilterUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiFilterUnitViewFactory"

+        canonicalEditPolicyClassName="MultiFilterUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.19 //@diagram/@childNodes.20"

+        graphicalNodeEditPolicyClassName="MultiFilterUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="MultiFilterUnit5CreateCommand"

+        containers="//@diagram/@compartments.46 //@diagram/@compartments.56 //@diagram/@compartments.58 //@diagram/@compartments.68 //@diagram/@compartments.30 //@diagram/@compartments.12 //@diagram/@compartments.78">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.18/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiFilterUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiFilterUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureMultiFilterUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiFilterUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureMultiFilterUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureMultiFilterUnitLabelFigure.setText(&quot;MultiFilterUnit&quot;);&#xA;&#xA;this.add(fFigureMultiFilterUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureMultiFilterUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureMultiFilterUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiFilterUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/helperUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5047"

+          editPartClassName="MultiFilterUnitNameType5EditPart"

+          itemSemanticEditPolicyClassName="MultiFilterUnitNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="MultiFilterUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureMultiFilterUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/MultiFilterUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3065"

+        editPartClassName="SingleQueuedUnit6EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnit6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnit6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.48 //@diagram/@compartments.49"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnit6GraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnit6CreateCommand"

+        containers="//@diagram/@compartments.57 //@diagram/@compartments.59 //@diagram/@compartments.69 //@diagram/@compartments.47 //@diagram/@compartments.31 //@diagram/@compartments.13 //@diagram/@compartments.79">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.21/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5061"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrict6EditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrict6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3066"

+        editPartClassName="ConditionalUnit4EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.50 //@diagram/@compartments.51 //@diagram/@compartments.52 //@diagram/@compartments.53"

+        graphicalNodeEditPolicyClassName="ConditionalUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnit4CreateCommand"

+        containers="//@diagram/@compartments.55 //@diagram/@compartments.49 //@diagram/@compartments.45 //@diagram/@compartments.43 //@diagram/@compartments.27 //@diagram/@compartments.9 //@diagram/@compartments.77">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.29/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5060"

+          editPartClassName="ConditionalUnitNameType4EditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3067"

+        editPartClassName="SingleQueuedUnit7EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnit7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnit7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.54 //@diagram/@compartments.55"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnit7GraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnit7CreateCommand"

+        containers="//@diagram/@compartments.53 //@diagram/@compartments.63 //@diagram/@compartments.67 //@diagram/@compartments.73 //@diagram/@compartments.37 //@diagram/@compartments.19 //@diagram/@compartments.83">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.21/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+      </modelFacet>

+      <labels

+          visualID="5049"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrict7EditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrict7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3068"

+        editPartClassName="AtomicUnit4EditPart"

+        itemSemanticEditPolicyClassName="AtomicUnit4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnit4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnit4GraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnit4CreateCommand"

+        containers="//@diagram/@compartments.55 //@diagram/@compartments.49 //@diagram/@compartments.45 //@diagram/@compartments.43 //@diagram/@compartments.27 //@diagram/@compartments.9 //@diagram/@compartments.77">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.33/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SingleQueuedUnit/refactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5048"

+          editPartClassName="AtomicUnitLabelType4EditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelType4ItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3069"

+        editPartClassName="SequentialUnit5EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.56 //@diagram/@compartments.57"

+        graphicalNodeEditPolicyClassName="SequentialUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnit5CreateCommand"

+        containers="//@diagram/@compartments.62 //@diagram/@compartments.66 //@diagram/@compartments.72 //@diagram/@compartments.52 //@diagram/@compartments.36 //@diagram/@compartments.18 //@diagram/@compartments.82">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.25/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+      </modelFacet>

+      <labels

+          visualID="5059"

+          editPartClassName="SequentialUnitNameTypeLblStrict5EditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrict5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3070"

+        editPartClassName="SequentialUnit6EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnit6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnit6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.58 //@diagram/@compartments.59"

+        graphicalNodeEditPolicyClassName="SequentialUnit6GraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnit6CreateCommand"

+        containers="//@diagram/@compartments.59 //@diagram/@compartments.69 //@diagram/@compartments.57 //@diagram/@compartments.47 //@diagram/@compartments.31 //@diagram/@compartments.13 //@diagram/@compartments.79">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.25/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5058"

+          editPartClassName="SequentialUnitNameTypeLblStrict6EditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrict6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3071"

+        editPartClassName="ConditionalUnit5EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.60 //@diagram/@compartments.61 //@diagram/@compartments.62 //@diagram/@compartments.63"

+        graphicalNodeEditPolicyClassName="ConditionalUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnit5CreateCommand"

+        containers="//@diagram/@compartments.69 //@diagram/@compartments.59 //@diagram/@compartments.57 //@diagram/@compartments.47 //@diagram/@compartments.31 //@diagram/@compartments.13 //@diagram/@compartments.79">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.29/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5057"

+          editPartClassName="ConditionalUnitNameType5EditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3072"

+        editPartClassName="ConditionalUnit6EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnit6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnit6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.64 //@diagram/@compartments.65 //@diagram/@compartments.66 //@diagram/@compartments.67"

+        graphicalNodeEditPolicyClassName="ConditionalUnit6GraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnit6CreateCommand"

+        containers="//@diagram/@compartments.66 //@diagram/@compartments.72 //@diagram/@compartments.62 //@diagram/@compartments.52 //@diagram/@compartments.36 //@diagram/@compartments.18 //@diagram/@compartments.82">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.29/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+      </modelFacet>

+      <labels

+          visualID="5056"

+          editPartClassName="ConditionalUnitNameType6EditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameType6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3073"

+        editPartClassName="SequentialUnit7EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnit7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnit7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.68 //@diagram/@compartments.69"

+        graphicalNodeEditPolicyClassName="SequentialUnit7GraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnit7CreateCommand"

+        containers="//@diagram/@compartments.67 //@diagram/@compartments.73 //@diagram/@compartments.63 //@diagram/@compartments.53 //@diagram/@compartments.37 //@diagram/@compartments.19 //@diagram/@compartments.83">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.25/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+      </modelFacet>

+      <labels

+          visualID="5051"

+          editPartClassName="SequentialUnitNameTypeLblStrict7EditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrict7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3074"

+        editPartClassName="AtomicUnit5EditPart"

+        itemSemanticEditPolicyClassName="AtomicUnit5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnit5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnit5GraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnit5CreateCommand"

+        containers="//@diagram/@compartments.69 //@diagram/@compartments.59 //@diagram/@compartments.57 //@diagram/@compartments.47 //@diagram/@compartments.31 //@diagram/@compartments.13 //@diagram/@compartments.79">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.33/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/SequentialUnit/refactoringUnits"/>

+      </modelFacet>

+      <labels

+          visualID="5050"

+          editPartClassName="AtomicUnitLabelType5EditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelType5ItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3075"

+        editPartClassName="ConditionalUnit7EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnit7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnit7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.70 //@diagram/@compartments.71 //@diagram/@compartments.72 //@diagram/@compartments.73"

+        graphicalNodeEditPolicyClassName="ConditionalUnit7GraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnit7CreateCommand"

+        containers="//@diagram/@compartments.73 //@diagram/@compartments.67 //@diagram/@compartments.63 //@diagram/@compartments.53 //@diagram/@compartments.37 //@diagram/@compartments.19 //@diagram/@compartments.83">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.29/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+      </modelFacet>

+      <labels

+          visualID="5055"

+          editPartClassName="ConditionalUnitNameType7EditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameType7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3076"

+        editPartClassName="ConditionCheckEditPart"

+        itemSemanticEditPolicyClassName="ConditionCheckItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionCheckViewFactory"

+        canonicalEditPolicyClassName="ConditionCheckCanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="ConditionCheckGraphicalNodeEditPolicy"

+        createCommandClassName="ConditionCheckCreateCommand"

+        containers="//@diagram/@compartments.70 //@diagram/@compartments.64 //@diagram/@compartments.60 //@diagram/@compartments.50 //@diagram/@compartments.34 //@diagram/@compartments.16 //@diagram/@compartments.80">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="ConditionCheckEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionCheckFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionCheckFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionCheckLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionCheckFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionCheckLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionCheckLabelFigure.setText(&quot;ConditionCheck&quot;);&#xA;&#xA;this.add(fFigureConditionCheckLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionCheckLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionCheckLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionCheck"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/if"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/if"/>

+      </modelFacet>

+      <labels

+          visualID="5052"

+          editPartClassName="ConditionCheckNameTypeSpecEditPart"

+          itemSemanticEditPolicyClassName="ConditionCheckNameTypeSpecItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionCheckNameTypeSpecViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionCheckLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionCheck/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionCheck/spec"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3077"

+        editPartClassName="AtomicUnit6EditPart"

+        itemSemanticEditPolicyClassName="AtomicUnit6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnit6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnit6GraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnit6CreateCommand"

+        containers="//@diagram/@compartments.72 //@diagram/@compartments.66 //@diagram/@compartments.62 //@diagram/@compartments.52 //@diagram/@compartments.36 //@diagram/@compartments.18 //@diagram/@compartments.82">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.33/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/then"/>

+      </modelFacet>

+      <labels

+          visualID="5053"

+          editPartClassName="AtomicUnitLabelType6EditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelType6ItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <childNodes

+        visualID="3078"

+        editPartClassName="AtomicUnit7EditPart"

+        itemSemanticEditPolicyClassName="AtomicUnit7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnit7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnit7GraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnit7CreateCommand"

+        containers="//@diagram/@compartments.73 //@diagram/@compartments.67 //@diagram/@compartments.63 //@diagram/@compartments.53 //@diagram/@compartments.37 //@diagram/@compartments.19 //@diagram/@compartments.83">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.33/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ConditionalUnit/else"/>

+      </modelFacet>

+      <labels

+          visualID="5054"

+          editPartClassName="AtomicUnitLabelType7EditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelType7ItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </childNodes>

+    <topLevelNodes

+        visualID="2001"

+        editPartClassName="SingleInputPortEditPart"

+        itemSemanticEditPolicyClassName="SingleInputPortItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleInputPortViewFactory"

+        canonicalEditPolicyClassName="SingleInputPortCanonicalEditPolicy"

+        graphicalNodeEditPolicyClassName="SingleInputPortGraphicalNodeEditPolicy"

+        createCommandClassName="SingleInputPortCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SingleInputPortEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleInputPortFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(20)&#xA;, getMapMode().DPtoLP(20)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;">

+        <attributes

+            xsi:type="gmfgen:DefaultSizeAttributes"

+            width="20"

+            height="20"/>

+      </viewmap>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleInputPort"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/ModelRefactoring/inputPorts"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/ModelRefactoring/inputPorts"/>

+      </modelFacet>

+      <labels

+          xsi:type="gmfgen:GenExternalNodeLabel"

+          visualID="5001"

+          editPartClassName="SingleInputPortNameTypeEditPart"

+          itemSemanticEditPolicyClassName="SingleInputPortNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleInputPortNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:InnerClassViewmap"

+            className="SingleInputPortLabelFigure"

+            classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleInputPortLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleInputPortLabelFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;SingleInputPort&quot;);&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/Port/type"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <topLevelNodes

+        visualID="2002"

+        editPartClassName="CartesianQueuedUnitEditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"

+        compartments="//@diagram/@compartments.0 //@diagram/@compartments.1"

+        graphicalNodeEditPolicyClassName="CartesianQueuedUnitGraphicalNodeEditPolicy"

+        createCommandClassName="CartesianQueuedUnitCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="CartesianQueuedUnitEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="CartesianQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class CartesianQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureCartesianQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fCartesianQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public CartesianQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureCartesianQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureCartesianQueuedUnitLabelFigure.setText(&quot;CartesianQueuedUnit&quot;);&#xA;fFigureCartesianQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureCartesianQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fCartesianQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fCartesianQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureCartesianQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureCartesianQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getCartesianQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fCartesianQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/CartesianQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5080"

+          editPartClassName="CartesianQueuedUnitNameTypeLblStrictEditPart"

+          itemSemanticEditPolicyClassName="CartesianQueuedUnitNameTypeLblStrictItemSemanticEditPolicy"

+          notationViewFactoryClassName="CartesianQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureCartesianQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/CartesianQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <topLevelNodes

+        visualID="2003"

+        editPartClassName="ParallelQueuedUnitEditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"

+        compartments="//@diagram/@compartments.74 //@diagram/@compartments.75"

+        graphicalNodeEditPolicyClassName="ParallelQueuedUnitGraphicalNodeEditPolicy"

+        createCommandClassName="ParallelQueuedUnitCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.3/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ParallelQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ParallelQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureParallelQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fParallelQueuedUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ParallelQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureParallelQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureParallelQueuedUnitLabelFigure.setText(&quot;ParallelQueuedUnit&quot;);&#xA;fFigureParallelQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureParallelQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fParallelQueuedUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fParallelQueuedUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureParallelQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureParallelQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getParallelQueuedUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fParallelQueuedUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ParallelQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5081"

+          editPartClassName="ParallelQueuedUnitNameTypeLblStrictEditPart"

+          itemSemanticEditPolicyClassName="ParallelQueuedUnitNameTypeLblStrictItemSemanticEditPolicy"

+          notationViewFactoryClassName="ParallelQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureParallelQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ParallelQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <topLevelNodes

+        visualID="2004"

+        editPartClassName="SingleQueuedUnitEditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.22 //@diagram/@childNodes.23"

+        compartments="//@diagram/@compartments.76 //@diagram/@compartments.77"

+        graphicalNodeEditPolicyClassName="SingleQueuedUnitGraphicalNodeEditPolicy"

+        createCommandClassName="SingleQueuedUnitCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.21/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SingleQueuedUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SingleQueuedUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSingleQueuedUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSingleQueuedUnitRefactoringUnitCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SingleQueuedUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSingleQueuedUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSingleQueuedUnitLabelFigure.setText(&quot;SingleQueuedUnit&quot;);&#xA;fFigureSingleQueuedUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSingleQueuedUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSingleQueuedUnitRefactoringUnitCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSingleQueuedUnitRefactoringUnitCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSingleQueuedUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSingleQueuedUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSingleQueuedUnitRefactoringUnitCompartmentFigure() {&#xA;&#x9;&#x9;return fSingleQueuedUnitRefactoringUnitCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SingleQueuedUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5082"

+          editPartClassName="SingleQueuedUnitNameTypeLblStrictEditPart"

+          itemSemanticEditPolicyClassName="SingleQueuedUnitNameTypeLblStrictItemSemanticEditPolicy"

+          notationViewFactoryClassName="SingleQueuedUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSingleQueuedUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SingleQueuedUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <topLevelNodes

+        visualID="2005"

+        editPartClassName="SequentialUnitEditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.26 //@diagram/@childNodes.27"

+        compartments="//@diagram/@compartments.78 //@diagram/@compartments.79"

+        graphicalNodeEditPolicyClassName="SequentialUnitGraphicalNodeEditPolicy"

+        createCommandClassName="SequentialUnitCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.25/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SequentialUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SequentialUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureSequentialUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fSequentialUnitRefactoringUnitsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SequentialUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureSequentialUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureSequentialUnitLabelFigure.setText(&quot;SequentialUnit&quot;);&#xA;fFigureSequentialUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureSequentialUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fSequentialUnitRefactoringUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fSequentialUnitRefactoringUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureSequentialUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureSequentialUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getSequentialUnitRefactoringUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fSequentialUnitRefactoringUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/SequentialUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5083"

+          editPartClassName="SequentialUnitNameTypeLblStrictEditPart"

+          itemSemanticEditPolicyClassName="SequentialUnitNameTypeLblStrictItemSemanticEditPolicy"

+          notationViewFactoryClassName="SequentialUnitNameTypeLblStrictViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureSequentialUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1} -{2}-"

+            editorPattern="{0}:{1} -{2}-"

+            editPattern="{0}:{1} -{2}-">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/type"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/SequentialUnit/lblStrict"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <topLevelNodes

+        visualID="2006"

+        editPartClassName="ConditionalUnitEditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.30 //@diagram/@childNodes.31"

+        compartments="//@diagram/@compartments.80 //@diagram/@compartments.81 //@diagram/@compartments.82 //@diagram/@compartments.83"

+        graphicalNodeEditPolicyClassName="ConditionalUnitGraphicalNodeEditPolicy"

+        createCommandClassName="ConditionalUnitCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.29/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="ConditionalUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ConditionalUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureConditionalUnitLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitIfCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitHelperUnitsCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitThenCompartmentFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fConditionalUnitElseCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ConditionalUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureConditionalUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureConditionalUnitLabelFigure.setText(&quot;ConditionalUnit&quot;);&#xA;fFigureConditionalUnitLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigureConditionalUnitLabelFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitIfCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitIfCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitIfCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitHelperUnitsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitHelperUnitsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitHelperUnitsCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitThenCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitThenCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitThenCompartmentFigure);&#xA;&#xA;&#xA;&#xA;fConditionalUnitElseCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;fConditionalUnitElseCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fConditionalUnitElseCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureConditionalUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureConditionalUnitLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitIfCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitIfCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitHelperUnitsCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitHelperUnitsCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitThenCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitThenCompartmentFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getConditionalUnitElseCompartmentFigure() {&#xA;&#x9;&#x9;return fConditionalUnitElseCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <behaviour

+          xsi:type="gmfgen:OpenDiagramBehaviour"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/ConditionalUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5084"

+          editPartClassName="ConditionalUnitNameTypeEditPart"

+          itemSemanticEditPolicyClassName="ConditionalUnitNameTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="ConditionalUnitNameTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureConditionalUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/NamedElement/name"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/ConditionalUnit/type"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <topLevelNodes

+        visualID="2007"

+        editPartClassName="AtomicUnitEditPart"

+        itemSemanticEditPolicyClassName="AtomicUnitItemSemanticEditPolicy"

+        notationViewFactoryClassName="AtomicUnitViewFactory"

+        canonicalEditPolicyClassName="AtomicUnitCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.34"

+        graphicalNodeEditPolicyClassName="AtomicUnitGraphicalNodeEditPolicy"

+        createCommandClassName="AtomicUnitCreateCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <elementType

+          xsi:type="gmfgen:SpecializationType"

+          metamodelType="//@diagram/@childNodes.33/@elementType"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="AtomicUnitFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AtomicUnitFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAtomicUnitLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AtomicUnitFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAtomicUnitLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAtomicUnitLabelFigure.setText(&quot;AtomicUnit&quot;);&#xA;&#xA;this.add(fFigureAtomicUnitLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAtomicUnitLabelFigure() {&#xA;&#x9;&#x9;return fFigureAtomicUnitLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet>

+        <metaClass

+            href="comrel.genmodel#//comrel/AtomicUnit"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/mainRefactoringUnit"/>

+      </modelFacet>

+      <labels

+          visualID="5085"

+          editPartClassName="AtomicUnitLabelTypeEditPart"

+          itemSemanticEditPolicyClassName="AtomicUnitLabelTypeItemSemanticEditPolicy"

+          notationViewFactoryClassName="AtomicUnitLabelTypeViewFactory">

+        <diagramRunTimeClass

+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+        <viewmap

+            xsi:type="gmfgen:ParentAssignedViewmap"

+            getterName="getFigureAtomicUnitLabelFigure"

+            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>

+        <modelFacet

+            xsi:type="gmfgen:FeatureLabelModelFacet"

+            parser="//@labelParsers/@implementations.0"

+            viewPattern="{0}:{1}"

+            editorPattern="{0}:{1}"

+            editPattern="{0}:{1}">

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/label"/>

+          <metaFeatures

+              href="comrel.genmodel#//comrel/AtomicUnit/type"/>

+        </modelFacet>

+      </labels>

+    </topLevelNodes>

+    <links

+        visualID="4001"

+        editPartClassName="SinglePortMappingEditPart"

+        itemSemanticEditPolicyClassName="SinglePortMappingItemSemanticEditPolicy"

+        notationViewFactoryClassName="SinglePortMappingViewFactory"

+        createCommandClassName="SinglePortMappingCreateCommand"

+        reorientCommandClassName="SinglePortMappingReorientCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="SinglePortMappingEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="SinglePortMappingFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class SinglePortMappingFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public SinglePortMappingFigure() {&#xA;&#x9;&#x9;this.setLineWidth(2);&#xA;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DOT);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet

+          xsi:type="gmfgen:TypeLinkModelFacet">

+        <metaClass

+            href="comrel.genmodel#//comrel/SinglePortMapping"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/portMappings"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/portMappings"/>

+        <sourceMetaFeature

+            href="comrel.genmodel#//comrel/SinglePortMapping/source"/>

+        <targetMetaFeature

+            href="comrel.genmodel#//comrel/SinglePortMapping/target"/>

+      </modelFacet>

+      <creationConstraints

+          sourceEnd="//@expressionProviders/@providers.0/@expressions.0"/>

+    </links>

+    <links

+        visualID="4002"

+        editPartClassName="MultiPortMappingEditPart"

+        itemSemanticEditPolicyClassName="MultiPortMappingItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiPortMappingViewFactory"

+        createCommandClassName="MultiPortMappingCreateCommand"

+        reorientCommandClassName="MultiPortMappingReorientCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="MultiPortMappingEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiPortMappingFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiPortMappingFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiPortMappingFigure() {&#xA;&#x9;&#x9;this.setLineWidth(2);&#xA;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DOT);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet

+          xsi:type="gmfgen:TypeLinkModelFacet">

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiPortMapping"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/portMappings"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/portMappings"/>

+        <sourceMetaFeature

+            href="comrel.genmodel#//comrel/MultiPortMapping/source"/>

+        <targetMetaFeature

+            href="comrel.genmodel#//comrel/MultiPortMapping/target"/>

+      </modelFacet>

+      <creationConstraints

+          sourceEnd="//@expressionProviders/@providers.0/@expressions.1"/>

+    </links>

+    <links

+        visualID="4003"

+        editPartClassName="MultiSinglePortMappingEditPart"

+        itemSemanticEditPolicyClassName="MultiSinglePortMappingItemSemanticEditPolicy"

+        notationViewFactoryClassName="MultiSinglePortMappingViewFactory"

+        createCommandClassName="MultiSinglePortMappingCreateCommand"

+        reorientCommandClassName="MultiSinglePortMappingReorientCommand">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>

+      <elementType

+          xsi:type="gmfgen:MetamodelType"

+          editHelperClassName="MultiSinglePortMappingEditHelper"/>

+      <viewmap

+          xsi:type="gmfgen:InnerClassViewmap"

+          className="MultiSinglePortMappingFigure"

+          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class MultiSinglePortMappingFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public MultiSinglePortMappingFigure() {&#xA;&#x9;&#x9;this.setLineWidth(2);&#xA;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DOT);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>

+      <modelFacet

+          xsi:type="gmfgen:TypeLinkModelFacet">

+        <metaClass

+            href="comrel.genmodel#//comrel/MultiSinglePortMapping"/>

+        <containmentMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/portMappings"/>

+        <childMetaFeature

+            href="comrel.genmodel#//comrel/CompositeRefactoring/portMappings"/>

+        <sourceMetaFeature

+            href="comrel.genmodel#//comrel/MultiSinglePortMapping/source"/>

+        <targetMetaFeature

+            href="comrel.genmodel#//comrel/MultiSinglePortMapping/target"/>

+      </modelFacet>

+      <creationConstraints

+          sourceEnd="//@expressionProviders/@providers.0/@expressions.2"/>

+    </links>

+    <compartments

+        visualID="7001"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.1"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7002"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentEditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.1"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7003"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.2"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7004"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.2"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7005"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.3"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7006"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.3"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7007"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.6"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7008"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.6"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7009"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.21"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7010"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentEditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.21"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7011"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.24"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7012"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.24"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7013"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.25"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7014"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.25"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7015"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.28"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7016"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.28"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7017"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartmentEditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.29"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7018"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentEditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.29"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7019"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartmentEditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.29"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7020"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartmentEditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartmentItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartmentCanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.29"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7021"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.32"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7022"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.32"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7023"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.35"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7024"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.35"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7025"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.36"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7026"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.36"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7027"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.41"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7028"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.41"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7029"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.42"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7030"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.42"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7031"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.43"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7032"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.43"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7033"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.44"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7034"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.44"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7035"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartment2EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.45"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7036"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment2EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.45"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7037"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartment2EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.45"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7038"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartment2EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment2ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment2CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.45"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7039"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.11 //@diagram/@childNodes.15 //@diagram/@childNodes.18"

+        title="CartesianQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.46"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7040"

+        editPartClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7EditPart"

+        itemSemanticEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="CartesianQueuedUnitCartesianQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.21 //@diagram/@childNodes.25 //@diagram/@childNodes.29 //@diagram/@childNodes.33"

+        title="CartesianQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.46"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7041"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.47"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7042"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.47"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7043"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.53"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7044"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.53"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7045"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.58"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7046"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.58"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7047"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.59"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7048"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.59"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7049"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.64"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7050"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.64"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7051"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartment3EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.65"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7052"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment3EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.65"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7053"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartment3EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.65"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7054"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartment3EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment3ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment3CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.65"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7055"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.66"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7056"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.66"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7057"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.68"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7058"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.68"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7059"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.69"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7060"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.69"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7061"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartment4EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.70"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7062"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment4EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.70"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7063"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartment4EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.70"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7064"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartment4EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment4ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment4CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.70"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7065"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartment5EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.71"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7066"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment5EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.71"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7067"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartment5EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.71"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7068"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartment5EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment5ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment5CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.71"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7069"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.72"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7070"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.72"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7071"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartment6EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.74"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7072"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment6EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.74"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7073"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartment6EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.74"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7074"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartment6EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment6ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment6CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@childNodes.74"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7075"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.37 //@diagram/@childNodes.38 //@diagram/@childNodes.39 //@diagram/@childNodes.40"

+        title="ParallelQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.2"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7076"

+        editPartClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ParallelQueuedUnitParallelQueuedUnitRefactoringUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.6 //@diagram/@childNodes.36 //@diagram/@childNodes.41 //@diagram/@childNodes.43 //@diagram/@childNodes.45 //@diagram/@childNodes.48"

+        title="ParallelQueuedUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.2"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7077"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitHelperUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.54 //@diagram/@childNodes.55 //@diagram/@childNodes.56 //@diagram/@childNodes.57"

+        title="SingleQueuedUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.3"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7078"

+        editPartClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7EditPart"

+        itemSemanticEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartmentViewFactory"

+        canonicalEditPolicyClassName="SingleQueuedUnitSingleQueuedUnitRefactoringUnitCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.24 //@diagram/@childNodes.42 //@diagram/@childNodes.58 //@diagram/@childNodes.59 //@diagram/@childNodes.65 //@diagram/@childNodes.67"

+        title="SingleQueuedUnitRefactoringUnitCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.3"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7079"

+        editPartClassName="SequentialUnitSequentialUnitHelperUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitHelperUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.60 //@diagram/@childNodes.61 //@diagram/@childNodes.62 //@diagram/@childNodes.63"

+        title="SequentialUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.4"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7080"

+        editPartClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="SequentialUnitSequentialUnitRefactoringUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.28 //@diagram/@childNodes.44 //@diagram/@childNodes.64 //@diagram/@childNodes.69 //@diagram/@childNodes.70 //@diagram/@childNodes.73"

+        title="SequentialUnitRefactoringUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.4"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7081"

+        editPartClassName="ConditionalUnitConditionalUnitIfCompartment7EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitIfCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitIfCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.75"

+        title="ConditionalUnitIfCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.5"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitIfCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7082"

+        editPartClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment7EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitHelperUnitsCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitHelperUnitsCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.49 //@diagram/@childNodes.50 //@diagram/@childNodes.51 //@diagram/@childNodes.52"

+        title="ConditionalUnitHelperUnitsCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.5"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitHelperUnitsCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7083"

+        editPartClassName="ConditionalUnitConditionalUnitThenCompartment7EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitThenCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitThenCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.32 //@diagram/@childNodes.35 //@diagram/@childNodes.53 //@diagram/@childNodes.68 //@diagram/@childNodes.71 //@diagram/@childNodes.76"

+        title="ConditionalUnitThenCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.5"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitThenCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <compartments

+        visualID="7084"

+        editPartClassName="ConditionalUnitConditionalUnitElseCompartment7EditPart"

+        itemSemanticEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment7ItemSemanticEditPolicy"

+        notationViewFactoryClassName="ConditionalUnitConditionalUnitElseCompartmentViewFactory"

+        canonicalEditPolicyClassName="ConditionalUnitConditionalUnitElseCompartment7CanonicalEditPolicy"

+        childNodes="//@diagram/@childNodes.46 //@diagram/@childNodes.47 //@diagram/@childNodes.66 //@diagram/@childNodes.72 //@diagram/@childNodes.74 //@diagram/@childNodes.77"

+        title="ConditionalUnitElseCompartment"

+        needsTitle="false"

+        node="//@diagram/@topLevelNodes.5"

+        listLayout="false">

+      <diagramRunTimeClass

+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>

+      <viewmap

+          xsi:type="gmfgen:ParentAssignedViewmap"

+          getterName="getConditionalUnitElseCompartmentFigure"

+          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>

+    </compartments>

+    <palette>

+      <groups

+          title="Composite Units"

+          collapse="true">

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="CartesianQueuedUnit"

+            description="Create new CartesianQueuedUnit"

+            genNodes="//@diagram/@topLevelNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.6 //@diagram/@childNodes.24 //@diagram/@childNodes.28 //@diagram/@childNodes.32 //@diagram/@childNodes.46"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="ConditionCheck"

+            description="Create new ConditionCheck"

+            genNodes="//@diagram/@childNodes.75"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="ConditionalUnit"

+            description="Create new ConditionalUnit"

+            genNodes="//@diagram/@childNodes.29 //@diagram/@childNodes.45 //@diagram/@childNodes.65 //@diagram/@childNodes.70 //@diagram/@childNodes.71 //@diagram/@childNodes.74 //@diagram/@topLevelNodes.5"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="ParallelQueuedUnit"

+            description="Create new ParallelQueuedUnit"

+            genNodes="//@diagram/@childNodes.3 //@diagram/@childNodes.35 //@diagram/@childNodes.36 //@diagram/@childNodes.42 //@diagram/@childNodes.44 //@diagram/@childNodes.47 //@diagram/@topLevelNodes.2"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SequentialUnit"

+            description="Create new SequentialUnit"

+            genNodes="//@diagram/@childNodes.25 //@diagram/@childNodes.43 //@diagram/@childNodes.59 //@diagram/@childNodes.68 //@diagram/@childNodes.69 //@diagram/@childNodes.72 //@diagram/@topLevelNodes.4"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SingleQueuedUnit"

+            description="Create new SingleQueuedUnit"

+            genNodes="//@diagram/@childNodes.21 //@diagram/@childNodes.41 //@diagram/@childNodes.53 //@diagram/@childNodes.58 //@diagram/@childNodes.64 //@diagram/@childNodes.66 //@diagram/@topLevelNodes.3"/>

+      </groups>

+      <groups

+          title="Atomic Units"

+          collapse="true">

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="AtomicUnit"

+            description="Create new AtomicUnit"

+            genNodes="//@diagram/@childNodes.33 //@diagram/@childNodes.48 //@diagram/@childNodes.67 //@diagram/@childNodes.73 //@diagram/@childNodes.76 //@diagram/@childNodes.77 //@diagram/@topLevelNodes.6"/>

+      </groups>

+      <groups

+          title="Filter Units"

+          collapse="true">

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="MultiFilterUnit"

+            description="Create new MultiFilterUnit"

+            genNodes="//@diagram/@childNodes.18 //@diagram/@childNodes.40 //@diagram/@childNodes.52 //@diagram/@childNodes.57 //@diagram/@childNodes.63"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SingleFilterUnit"

+            description="Create new SingleFilterUnit"

+            genNodes="//@diagram/@childNodes.15 //@diagram/@childNodes.39 //@diagram/@childNodes.51 //@diagram/@childNodes.56 //@diagram/@childNodes.62"/>

+      </groups>

+      <groups

+          title="Feature Units"

+          collapse="true">

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="MultiFeatureUnit"

+            description="Create new MultiFeatureUnit"

+            genNodes="//@diagram/@childNodes.11 //@diagram/@childNodes.38 //@diagram/@childNodes.50 //@diagram/@childNodes.55 //@diagram/@childNodes.61"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SingleFeatureUnit"

+            description="Create new SingleFeatureUnit"

+            genNodes="//@diagram/@childNodes.7 //@diagram/@childNodes.37 //@diagram/@childNodes.49 //@diagram/@childNodes.54 //@diagram/@childNodes.60"/>

+      </groups>

+      <groups

+          title="Ports"

+          collapse="true">

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="MultiInputPort"

+            description="Create new MultiInputPort"

+            genNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.5 //@diagram/@childNodes.9 //@diagram/@childNodes.13 //@diagram/@childNodes.16 //@diagram/@childNodes.19 //@diagram/@childNodes.23 //@diagram/@childNodes.27 //@diagram/@childNodes.31"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="MultiOutputPort"

+            description="Create new MultiOutputPort"

+            genNodes="//@diagram/@childNodes.14 //@diagram/@childNodes.20"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SingleInputPort"

+            description="Create new SingleInputPort"

+            genNodes="//@diagram/@topLevelNodes.0 //@diagram/@childNodes.0 //@diagram/@childNodes.4 //@diagram/@childNodes.8 //@diagram/@childNodes.12 //@diagram/@childNodes.22 //@diagram/@childNodes.26 //@diagram/@childNodes.30 //@diagram/@childNodes.34"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SingleOutputPort"

+            description="Create new SingleOutputPort"

+            genNodes="//@diagram/@childNodes.10 //@diagram/@childNodes.17"/>

+      </groups>

+      <groups

+          title="Mappings"

+          collapse="true">

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="MultiPortMapping"

+            description="Create new MultiPortMapping"

+            genLinks="//@diagram/@links.1"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="MultiSinglePortMapping"

+            description="Create new MultiSinglePortMapping"

+            genLinks="//@diagram/@links.2"/>

+        <entries

+            xsi:type="gmfgen:ToolEntry"

+            title="SinglePortMapping"

+            description="Create new SinglePortMapping"

+            genLinks="//@diagram/@links.0"/>

+      </groups>

+    </palette>

+    <preferencePages

+        xsi:type="gmfgen:GenStandardPreferencePage"

+        iD="comrel.diagram.general"

+        name="Comrel Diagram">

+      <children

+          xsi:type="gmfgen:GenStandardPreferencePage"

+          iD="comrel.diagram.appearance"

+          name="Appearance"

+          kind="Appearance"/>

+      <children

+          xsi:type="gmfgen:GenStandardPreferencePage"

+          iD="comrel.diagram.connections"

+          name="Connections"

+          kind="Connections"/>

+      <children

+          xsi:type="gmfgen:GenStandardPreferencePage"

+          iD="comrel.diagram.printing"

+          name="Printing"

+          kind="Printing"/>

+      <children

+          xsi:type="gmfgen:GenStandardPreferencePage"

+          iD="comrel.diagram.rulersAndGrid"

+          name="Rulers And Grid"

+          kind="RulersAndGrid"/>

+    </preferencePages>

+  </diagram>

+  <plugin

+      printingEnabled="true">

+    <requiredPlugins>org.eclipse.draw2d</requiredPlugins>

+    <requiredPlugins>org.eclipse.gmf.runtime.draw2d.ui</requiredPlugins>

+  </plugin>

+  <editor/>

+  <navigator>

+    <childReferences

+        child="//@diagram"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.0"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@childNodes.7"

+        child="//@diagram/@childNodes.8"/>

+    <childReferences

+        parent="//@diagram/@childNodes.7"

+        child="//@diagram/@childNodes.9"/>

+    <childReferences

+        parent="//@diagram/@childNodes.7"

+        child="//@diagram/@childNodes.10"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@childNodes.11"

+        child="//@diagram/@childNodes.12"/>

+    <childReferences

+        parent="//@diagram/@childNodes.11"

+        child="//@diagram/@childNodes.13"/>

+    <childReferences

+        parent="//@diagram/@childNodes.11"

+        child="//@diagram/@childNodes.14"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@childNodes.15"

+        child="//@diagram/@childNodes.16"/>

+    <childReferences

+        parent="//@diagram/@childNodes.15"

+        child="//@diagram/@childNodes.17"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@childNodes.18"

+        child="//@diagram/@childNodes.19"/>

+    <childReferences

+        parent="//@diagram/@childNodes.18"

+        child="//@diagram/@childNodes.20"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@childNodes.33"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram/@childNodes.32"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@childNodes.37"

+        child="//@diagram/@childNodes.8"/>

+    <childReferences

+        parent="//@diagram/@childNodes.37"

+        child="//@diagram/@childNodes.9"/>

+    <childReferences

+        parent="//@diagram/@childNodes.37"

+        child="//@diagram/@childNodes.10"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@childNodes.38"

+        child="//@diagram/@childNodes.12"/>

+    <childReferences

+        parent="//@diagram/@childNodes.38"

+        child="//@diagram/@childNodes.13"/>

+    <childReferences

+        parent="//@diagram/@childNodes.38"

+        child="//@diagram/@childNodes.14"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@childNodes.39"

+        child="//@diagram/@childNodes.16"/>

+    <childReferences

+        parent="//@diagram/@childNodes.39"

+        child="//@diagram/@childNodes.17"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@childNodes.40"

+        child="//@diagram/@childNodes.19"/>

+    <childReferences

+        parent="//@diagram/@childNodes.40"

+        child="//@diagram/@childNodes.20"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.0"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.1"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@childNodes.46"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@childNodes.48"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram/@childNodes.47"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@childNodes.49"

+        child="//@diagram/@childNodes.8"/>

+    <childReferences

+        parent="//@diagram/@childNodes.49"

+        child="//@diagram/@childNodes.9"/>

+    <childReferences

+        parent="//@diagram/@childNodes.49"

+        child="//@diagram/@childNodes.10"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@childNodes.50"

+        child="//@diagram/@childNodes.12"/>

+    <childReferences

+        parent="//@diagram/@childNodes.50"

+        child="//@diagram/@childNodes.13"/>

+    <childReferences

+        parent="//@diagram/@childNodes.50"

+        child="//@diagram/@childNodes.14"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@childNodes.51"

+        child="//@diagram/@childNodes.16"/>

+    <childReferences

+        parent="//@diagram/@childNodes.51"

+        child="//@diagram/@childNodes.17"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@childNodes.52"

+        child="//@diagram/@childNodes.19"/>

+    <childReferences

+        parent="//@diagram/@childNodes.52"

+        child="//@diagram/@childNodes.20"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@childNodes.54"

+        child="//@diagram/@childNodes.8"/>

+    <childReferences

+        parent="//@diagram/@childNodes.54"

+        child="//@diagram/@childNodes.9"/>

+    <childReferences

+        parent="//@diagram/@childNodes.54"

+        child="//@diagram/@childNodes.10"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@childNodes.55"

+        child="//@diagram/@childNodes.12"/>

+    <childReferences

+        parent="//@diagram/@childNodes.55"

+        child="//@diagram/@childNodes.13"/>

+    <childReferences

+        parent="//@diagram/@childNodes.55"

+        child="//@diagram/@childNodes.14"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@childNodes.56"

+        child="//@diagram/@childNodes.16"/>

+    <childReferences

+        parent="//@diagram/@childNodes.56"

+        child="//@diagram/@childNodes.17"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@childNodes.57"

+        child="//@diagram/@childNodes.19"/>

+    <childReferences

+        parent="//@diagram/@childNodes.57"

+        child="//@diagram/@childNodes.20"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@childNodes.60"

+        child="//@diagram/@childNodes.8"/>

+    <childReferences

+        parent="//@diagram/@childNodes.60"

+        child="//@diagram/@childNodes.9"/>

+    <childReferences

+        parent="//@diagram/@childNodes.60"

+        child="//@diagram/@childNodes.10"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@childNodes.61"

+        child="//@diagram/@childNodes.12"/>

+    <childReferences

+        parent="//@diagram/@childNodes.61"

+        child="//@diagram/@childNodes.13"/>

+    <childReferences

+        parent="//@diagram/@childNodes.61"

+        child="//@diagram/@childNodes.14"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@childNodes.62"

+        child="//@diagram/@childNodes.16"/>

+    <childReferences

+        parent="//@diagram/@childNodes.62"

+        child="//@diagram/@childNodes.17"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@childNodes.63"

+        child="//@diagram/@childNodes.19"/>

+    <childReferences

+        parent="//@diagram/@childNodes.63"

+        child="//@diagram/@childNodes.20"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@childNodes.67"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram/@childNodes.66"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@childNodes.73"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram/@childNodes.72"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@childNodes.76"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@childNodes.77"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram/@childNodes.74"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@childNodes.71"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@childNodes.70"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@childNodes.69"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@childNodes.68"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@childNodes.65"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@childNodes.64"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@childNodes.59"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@childNodes.58"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@childNodes.53"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@childNodes.45"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@childNodes.44"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@childNodes.43"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@childNodes.42"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@childNodes.41"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@childNodes.36"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@childNodes.35"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@childNodes.29"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@childNodes.28"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@childNodes.25"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@childNodes.24"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@childNodes.21"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@childNodes.6"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@childNodes.3"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@childNodes.2"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.2"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.3"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.7"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.11"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.15"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.18"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.21"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.25"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.29"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.1"

+        child="//@diagram/@childNodes.33"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.1"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.4"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.5"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.6"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.36"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.37"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.38"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.39"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.40"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.41"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.43"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.45"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.2"

+        child="//@diagram/@childNodes.48"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.2"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.22"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.23"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.24"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.42"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.54"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.55"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.56"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.57"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.58"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.59"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.65"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.3"

+        child="//@diagram/@childNodes.67"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.3"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.26"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.27"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.28"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.44"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.60"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.61"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.62"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.63"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.64"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.69"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.70"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.4"

+        child="//@diagram/@childNodes.73"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.4"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.30"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.31"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.32"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.35"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.46"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.47"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.49"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.50"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.51"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.52"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.53"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.66"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.68"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.71"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.72"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.74"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.75"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.76"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.5"

+        child="//@diagram/@childNodes.77"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.5"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.6"

+        child="//@diagram/@childNodes.34"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@topLevelNodes.6"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@links.0"

+        groupName="links"

+        groupIcon="icons/linksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@topLevelNodes.0"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.0"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.0"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.0"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.4"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.4"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.8"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.8"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.12"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.12"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.22"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.22"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.26"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.26"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.30"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.30"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.34"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.34"

+        child="//@diagram/@links.0"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@topLevelNodes.0"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.0"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.0"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.0"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.4"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.4"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.8"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.8"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.10"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.10"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.12"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.12"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.17"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.17"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.22"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.22"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.26"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.26"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.30"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.30"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.0"

+        child="//@diagram/@childNodes.34"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.34"

+        child="//@diagram/@links.0"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@links.1"

+        groupName="links"

+        groupIcon="icons/linksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.1"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.1"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.5"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.5"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.9"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.9"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.13"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.13"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.16"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.16"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.19"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.19"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.23"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.23"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.27"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.27"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.31"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.31"

+        child="//@diagram/@links.1"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.1"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.1"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.5"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.5"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.9"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.9"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.13"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.13"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.14"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.14"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.16"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.16"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.19"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.19"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.20"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.20"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.23"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.23"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.27"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.27"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.1"

+        child="//@diagram/@childNodes.31"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.31"

+        child="//@diagram/@links.1"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram"

+        child="//@diagram/@links.2"

+        groupName="links"

+        groupIcon="icons/linksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@topLevelNodes.0"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@topLevelNodes.0"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.0"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.0"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.4"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.4"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.8"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.8"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.12"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.12"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.22"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.22"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.26"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.26"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.30"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.30"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.34"

+        referenceType="out_target"

+        groupName="target"

+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.34"

+        child="//@diagram/@links.2"

+        referenceType="in_source"

+        groupName="incoming links"

+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.1"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.1"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.5"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.5"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.9"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.9"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.13"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.13"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.14"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.14"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.16"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.16"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.19"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.19"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.20"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.20"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.23"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.23"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.27"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.27"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@links.2"

+        child="//@diagram/@childNodes.31"

+        referenceType="in_source"

+        groupName="source"

+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>

+    <childReferences

+        parent="//@diagram/@childNodes.31"

+        child="//@diagram/@links.2"

+        referenceType="out_target"

+        groupName="outgoing links"

+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>

+  </navigator>

+  <diagramUpdater/>

+  <propertySheet>

+    <tabs

+        xsi:type="gmfgen:GenStandardPropertyTab"

+        iD="appearance"/>

+    <tabs

+        xsi:type="gmfgen:GenStandardPropertyTab"

+        iD="diagram"/>

+    <tabs

+        xsi:type="gmfgen:GenCustomPropertyTab"

+        iD="domain"

+        label="Core">

+      <filter

+          xsi:type="gmfgen:TypeTabFilter">

+        <types>org.eclipse.gmf.runtime.notation.View</types>

+        <types>org.eclipse.gef.EditPart</types>

+        <generatedTypes>abstractNavigatorItem</generatedTypes>

+      </filter>

+    </tabs>

+  </propertySheet>

+  <domainGenModel

+      href="comrel.genmodel#/"/>

+  <expressionProviders>

+    <providers

+        xsi:type="gmfgen:GenExpressionInterpreter">

+      <expressions

+          xsi:type="gmfgen:GenConstraint"

+          body="self&lt;>oppositeEnd"/>

+      <expressions

+          xsi:type="gmfgen:GenConstraint"

+          body="self&lt;>oppositeEnd"/>

+      <expressions

+          xsi:type="gmfgen:GenConstraint"

+          body="self&lt;>oppositeEnd"/>

+    </providers>

+  </expressionProviders>

+  <labelParsers

+      extensibleViaService="true">

+    <implementations

+        xsi:type="gmfgen:PredefinedParser"

+        uses="//@diagram/@topLevelNodes.0/@labels.0/@modelFacet //@diagram/@childNodes.0/@labels.0/@modelFacet //@diagram/@childNodes.1/@labels.0/@modelFacet //@diagram/@childNodes.4/@labels.0/@modelFacet //@diagram/@childNodes.5/@labels.0/@modelFacet //@diagram/@childNodes.8/@labels.0/@modelFacet //@diagram/@childNodes.9/@labels.0/@modelFacet //@diagram/@childNodes.10/@labels.0/@modelFacet //@diagram/@childNodes.7/@labels.0/@modelFacet //@diagram/@childNodes.12/@labels.0/@modelFacet //@diagram/@childNodes.13/@labels.0/@modelFacet //@diagram/@childNodes.14/@labels.0/@modelFacet //@diagram/@childNodes.11/@labels.0/@modelFacet //@diagram/@childNodes.16/@labels.0/@modelFacet //@diagram/@childNodes.17/@labels.0/@modelFacet //@diagram/@childNodes.15/@labels.0/@modelFacet //@diagram/@childNodes.19/@labels.0/@modelFacet //@diagram/@childNodes.20/@labels.0/@modelFacet //@diagram/@childNodes.18/@labels.0/@modelFacet //@diagram/@childNodes.22/@labels.0/@modelFacet //@diagram/@childNodes.23/@labels.0/@modelFacet //@diagram/@childNodes.26/@labels.0/@modelFacet //@diagram/@childNodes.27/@labels.0/@modelFacet //@diagram/@childNodes.30/@labels.0/@modelFacet //@diagram/@childNodes.31/@labels.0/@modelFacet //@diagram/@childNodes.34/@labels.0/@modelFacet //@diagram/@childNodes.33/@labels.0/@modelFacet //@diagram/@childNodes.32/@labels.0/@modelFacet //@diagram/@childNodes.37/@labels.0/@modelFacet //@diagram/@childNodes.38/@labels.0/@modelFacet //@diagram/@childNodes.39/@labels.0/@modelFacet //@diagram/@childNodes.40/@labels.0/@modelFacet //@diagram/@childNodes.46/@labels.0/@modelFacet //@diagram/@childNodes.48/@labels.0/@modelFacet //@diagram/@childNodes.47/@labels.0/@modelFacet //@diagram/@childNodes.49/@labels.0/@modelFacet //@diagram/@childNodes.50/@labels.0/@modelFacet //@diagram/@childNodes.51/@labels.0/@modelFacet //@diagram/@childNodes.52/@labels.0/@modelFacet //@diagram/@childNodes.54/@labels.0/@modelFacet //@diagram/@childNodes.55/@labels.0/@modelFacet //@diagram/@childNodes.56/@labels.0/@modelFacet //@diagram/@childNodes.57/@labels.0/@modelFacet //@diagram/@childNodes.60/@labels.0/@modelFacet //@diagram/@childNodes.61/@labels.0/@modelFacet //@diagram/@childNodes.62/@labels.0/@modelFacet //@diagram/@childNodes.63/@labels.0/@modelFacet //@diagram/@childNodes.67/@labels.0/@modelFacet //@diagram/@childNodes.66/@labels.0/@modelFacet //@diagram/@childNodes.73/@labels.0/@modelFacet //@diagram/@childNodes.72/@labels.0/@modelFacet //@diagram/@childNodes.75/@labels.0/@modelFacet //@diagram/@childNodes.76/@labels.0/@modelFacet //@diagram/@childNodes.77/@labels.0/@modelFacet //@diagram/@childNodes.74/@labels.0/@modelFacet //@diagram/@childNodes.71/@labels.0/@modelFacet //@diagram/@childNodes.70/@labels.0/@modelFacet //@diagram/@childNodes.69/@labels.0/@modelFacet //@diagram/@childNodes.68/@labels.0/@modelFacet //@diagram/@childNodes.65/@labels.0/@modelFacet //@diagram/@childNodes.64/@labels.0/@modelFacet //@diagram/@childNodes.59/@labels.0/@modelFacet //@diagram/@childNodes.58/@labels.0/@modelFacet //@diagram/@childNodes.53/@labels.0/@modelFacet //@diagram/@childNodes.45/@labels.0/@modelFacet //@diagram/@childNodes.44/@labels.0/@modelFacet //@diagram/@childNodes.43/@labels.0/@modelFacet //@diagram/@childNodes.42/@labels.0/@modelFacet //@diagram/@childNodes.41/@labels.0/@modelFacet //@diagram/@childNodes.36/@labels.0/@modelFacet //@diagram/@childNodes.35/@labels.0/@modelFacet //@diagram/@childNodes.29/@labels.0/@modelFacet //@diagram/@childNodes.28/@labels.0/@modelFacet //@diagram/@childNodes.25/@labels.0/@modelFacet //@diagram/@childNodes.24/@labels.0/@modelFacet //@diagram/@childNodes.21/@labels.0/@modelFacet //@diagram/@childNodes.6/@labels.0/@modelFacet //@diagram/@childNodes.3/@labels.0/@modelFacet //@diagram/@childNodes.2/@labels.0/@modelFacet //@diagram/@topLevelNodes.1/@labels.0/@modelFacet //@diagram/@topLevelNodes.2/@labels.0/@modelFacet //@diagram/@topLevelNodes.3/@labels.0/@modelFacet //@diagram/@topLevelNodes.4/@labels.0/@modelFacet //@diagram/@topLevelNodes.5/@labels.0/@modelFacet //@diagram/@topLevelNodes.6/@labels.0/@modelFacet"/>

+  </labelParsers>

+  <contextMenus

+      context="//@diagram">

+    <items

+        xsi:type="gmfgen:LoadResourceAction"/>

+  </contextMenus>

+</gmfgen:GenEditorGenerator>

diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.gmfgraph b/org.eclipse.emf.refactor.comrel/model/comrel.gmfgraph
new file mode 100644
index 0000000..16db4f0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.gmfgraph
@@ -0,0 +1,716 @@
+<?xml version="1.0" encoding="ASCII"?>

+<gmfgraph:Canvas xmi:version="2.0"

+    xmlns:xmi="http://www.omg.org/XMI"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xmlns:gmfgraph="http://www.eclipse.org/gmf/2006/GraphicalDefinition" name="comrel">

+  <figures

+      name="Default">

+    <figures

+        xsi:type="gmfgraph:PolylineDecoration"

+        name="SinglePortMappingFigureTargetDecoration"/>

+    <figures

+        xsi:type="gmfgraph:PolylineDecoration"

+        name="MultiPortMappingFigureTargetDecoration"/>

+    <figures

+        xsi:type="gmfgraph:PolylineDecoration"

+        name="MultiSinglePortMappingFigureTargetDecoration"/>

+    <descriptors

+        name="AtomicUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="AtomicUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="AtomicUnitLabelFigure"

+            text="AtomicUnit"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureAtomicUnitLabelFigure"

+          figure="//@figures.0/@descriptors.0/@actualFigure/@children.0"/>

+    </descriptors>

+    <descriptors

+        name="SequentialUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="SequentialUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="SequentialUnitLabelFigure"

+            text="SequentialUnit">

+          <maximumSize

+              dx="10000"

+              dy="50"/>

+        </children>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="SequentialUnitHelperUnitsCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="SequentialUnitRefactoringUnitsCompartmentFigure"

+            outline="false"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureSequentialUnitLabelFigure"

+          figure="//@figures.0/@descriptors.1/@actualFigure/@children.0"/>

+      <accessors

+          accessor="getSequentialUnitHelperUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.1/@actualFigure/@children.1"/>

+      <accessors

+          accessor="getSequentialUnitRefactoringUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.1/@actualFigure/@children.2"/>

+    </descriptors>

+    <descriptors

+        name="ConditionCheckFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="ConditionCheckFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="ConditionCheckLabelFigure"

+            text="ConditionCheck"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureConditionCheckLabelFigure"

+          figure="//@figures.0/@descriptors.2/@actualFigure/@children.0"/>

+    </descriptors>

+    <descriptors

+        name="ConditionalUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="ConditionalUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="ConditionalUnitLabelFigure"

+            text="ConditionalUnit">

+          <maximumSize

+              dx="10000"

+              dy="50"/>

+        </children>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="ConditionalUnitIfCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="ConditionalUnitHelperUnitsCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="ConditionalUnitThenCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="ConditionalUnitElseCompartmentFigure"

+            outline="false"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureConditionalUnitLabelFigure"

+          figure="//@figures.0/@descriptors.3/@actualFigure/@children.0"/>

+      <accessors

+          accessor="getConditionalUnitIfCompartmentFigure"

+          figure="//@figures.0/@descriptors.3/@actualFigure/@children.1"/>

+      <accessors

+          accessor="getConditionalUnitHelperUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.3/@actualFigure/@children.2"/>

+      <accessors

+          accessor="getConditionalUnitThenCompartmentFigure"

+          figure="//@figures.0/@descriptors.3/@actualFigure/@children.3"/>

+      <accessors

+          accessor="getConditionalUnitElseCompartmentFigure"

+          figure="//@figures.0/@descriptors.3/@actualFigure/@children.4"/>

+    </descriptors>

+    <descriptors

+        name="SingleQueuedUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="SingleQueuedUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="SingleQueuedUnitLabelFigure"

+            text="SingleQueuedUnit">

+          <maximumSize

+              dx="10000"

+              dy="50"/>

+        </children>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="SingleQueuedUnitHelperUnitsCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="SingleQueuedUnitRefactoringUnitCompartmentFigure"

+            outline="false"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureSingleQueuedUnitLabelFigure"

+          figure="//@figures.0/@descriptors.4/@actualFigure/@children.0"/>

+      <accessors

+          accessor="getSingleQueuedUnitHelperUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.4/@actualFigure/@children.1"/>

+      <accessors

+          accessor="getSingleQueuedUnitRefactoringUnitCompartmentFigure"

+          figure="//@figures.0/@descriptors.4/@actualFigure/@children.2"/>

+    </descriptors>

+    <descriptors

+        name="CartesianQueuedUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="CartesianQueuedUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="CartesianQueuedUnitLabelFigure"

+            text="CartesianQueuedUnit">

+          <maximumSize

+              dx="10000"

+              dy="50"/>

+        </children>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="CartesianQueuedUnitHelperUnitsCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="CartesianQueuedUnitRefactoringUnitCompartmentFigure"

+            outline="false"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureCartesianQueuedUnitLabelFigure"

+          figure="//@figures.0/@descriptors.5/@actualFigure/@children.0"/>

+      <accessors

+          accessor="getCartesianQueuedUnitHelperUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.5/@actualFigure/@children.1"/>

+      <accessors

+          accessor="getCartesianQueuedUnitRefactoringUnitCompartmentFigure"

+          figure="//@figures.0/@descriptors.5/@actualFigure/@children.2"/>

+    </descriptors>

+    <descriptors

+        name="ParallelQueuedUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="ParallelQueuedUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="ParallelQueuedUnitLabelFigure"

+            text="ParallelQueuedUnit">

+          <maximumSize

+              dx="10000"

+              dy="50"/>

+        </children>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="ParallelQueuedUnitHelperUnitsCompartmentFigure"

+            outline="false"/>

+        <children

+            xsi:type="gmfgraph:Rectangle"

+            name="ParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+            outline="false"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureParallelQueuedUnitLabelFigure"

+          figure="//@figures.0/@descriptors.6/@actualFigure/@children.0"/>

+      <accessors

+          accessor="getParallelQueuedUnitHelperUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.6/@actualFigure/@children.1"/>

+      <accessors

+          accessor="getParallelQueuedUnitRefactoringUnitsCompartmentFigure"

+          figure="//@figures.0/@descriptors.6/@actualFigure/@children.2"/>

+    </descriptors>

+    <descriptors

+        name="SingleFeatureUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="SingleFeatureUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="SingleFeatureUnitLabelFigure"

+            text="SingleFeatureUnit"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureSingleFeatureUnitLabelFigure"

+          figure="//@figures.0/@descriptors.7/@actualFigure/@children.0"/>

+    </descriptors>

+    <descriptors

+        name="MultiFeatureUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="MultiFeatureUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="MultiFeatureUnitLabelFigure"

+            text="MultiFeatureUnit"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureMultiFeatureUnitLabelFigure"

+          figure="//@figures.0/@descriptors.8/@actualFigure/@children.0"/>

+    </descriptors>

+    <descriptors

+        name="SingleFilterUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="SingleFilterUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="SingleFilterUnitLabelFigure"

+            text="SingleFilterUnit"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureSingleFilterUnitLabelFigure"

+          figure="//@figures.0/@descriptors.9/@actualFigure/@children.0"/>

+    </descriptors>

+    <descriptors

+        name="MultiFilterUnitFigure">

+      <actualFigure

+          xsi:type="gmfgraph:RoundedRectangle"

+          name="MultiFilterUnitFigure">

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+        <children

+            xsi:type="gmfgraph:Label"

+            name="MultiFilterUnitLabelFigure"

+            text="MultiFilterUnit"/>

+      </actualFigure>

+      <accessors

+          accessor="getFigureMultiFilterUnitLabelFigure"

+          figure="//@figures.0/@descriptors.10/@actualFigure/@children.0"/>

+    </descriptors>

+    <descriptors

+        name="SingleInputPortFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Rectangle"

+          name="SingleInputPortFigure">

+        <preferredSize

+            dx="20"

+            dy="20"/>

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+      </actualFigure>

+    </descriptors>

+    <descriptors

+        name="SingleInputPortLabelFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Label"

+          name="SingleInputPortLabelFigure"

+          text="SingleInputPort"/>

+    </descriptors>

+    <descriptors

+        name="MultiInputPortFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Rectangle"

+          name="MultiInputPortFigure"

+          lineWidth="10">

+        <foregroundColor

+            xsi:type="gmfgraph:RGBColor"

+            red="255"/>

+        <preferredSize

+            dx="20"

+            dy="20"/>

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+      </actualFigure>

+    </descriptors>

+    <descriptors

+        name="MultiInputPortLabelFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Label"

+          name="MultiInputPortLabelFigure"

+          text="MultiInputPort"/>

+    </descriptors>

+    <descriptors

+        name="SingleOutputPortFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Ellipse"

+          name="SingleOutputPortFigure">

+        <preferredSize

+            dx="20"

+            dy="20"/>

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+      </actualFigure>

+    </descriptors>

+    <descriptors

+        name="SingleOutputPortLabelFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Label"

+          name="SingleOutputPortLabelFigure"

+          text="SingleOutputPort"/>

+    </descriptors>

+    <descriptors

+        name="MultiOutputPortFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Ellipse"

+          name="MultiOutputPortFigure"

+          lineWidth="10">

+        <foregroundColor

+            xsi:type="gmfgraph:RGBColor"

+            red="255"/>

+        <preferredSize

+            dx="20"

+            dy="20"/>

+        <border

+            xsi:type="gmfgraph:MarginBorder">

+          <insets

+              top="5"

+              left="5"

+              bottom="5"

+              right="5"/>

+        </border>

+      </actualFigure>

+    </descriptors>

+    <descriptors

+        name="MultiOutputPortLabelFigure">

+      <actualFigure

+          xsi:type="gmfgraph:Label"

+          name="MultiOutputPortLabelFigure"

+          text="MultiOutputPort"/>

+    </descriptors>

+    <descriptors

+        name="SinglePortMappingFigure">

+      <actualFigure

+          xsi:type="gmfgraph:PolylineConnection"

+          name="SinglePortMappingFigure"

+          lineWidth="2"

+          lineKind="LINE_DOT"

+          targetDecoration="//@figures.0/@figures.0"/>

+    </descriptors>

+    <descriptors

+        name="MultiPortMappingFigure">

+      <actualFigure

+          xsi:type="gmfgraph:PolylineConnection"

+          name="MultiPortMappingFigure"

+          lineWidth="2"

+          lineKind="LINE_DOT"

+          targetDecoration="//@figures.0/@figures.1"/>

+    </descriptors>

+    <descriptors

+        name="MultiSinglePortMappingFigure">

+      <actualFigure

+          xsi:type="gmfgraph:PolylineConnection"

+          name="MultiSinglePortMappingFigure"

+          lineWidth="2"

+          lineKind="LINE_DOT"

+          targetDecoration="//@figures.0/@figures.2"/>

+    </descriptors>

+  </figures>

+  <nodes

+      name="AtomicUnit"

+      figure="AtomicUnitFigure"/>

+  <nodes

+      name="SequentialUnit"

+      figure="SequentialUnitFigure"/>

+  <nodes

+      name="ConditionCheck"

+      figure="ConditionCheckFigure"/>

+  <nodes

+      name="ConditionalUnit"

+      figure="ConditionalUnitFigure"/>

+  <nodes

+      name="SingleQueuedUnit"

+      figure="SingleQueuedUnitFigure"/>

+  <nodes

+      name="CartesianQueuedUnit"

+      figure="CartesianQueuedUnitFigure"/>

+  <nodes

+      name="ParallelQueuedUnit"

+      figure="ParallelQueuedUnitFigure"/>

+  <nodes

+      name="SingleFeatureUnit"

+      figure="SingleFeatureUnitFigure"/>

+  <nodes

+      name="MultiFeatureUnit"

+      figure="MultiFeatureUnitFigure"/>

+  <nodes

+      name="SingleFilterUnit"

+      figure="SingleFilterUnitFigure"/>

+  <nodes

+      name="MultiFilterUnit"

+      figure="MultiFilterUnitFigure"/>

+  <nodes

+      name="SingleInputPort"

+      figure="SingleInputPortFigure"

+      affixedParentSide="NSEW">

+    <facets

+        xsi:type="gmfgraph:DefaultSizeFacet">

+      <defaultSize

+          dx="20"

+          dy="20"/>

+    </facets>

+  </nodes>

+  <nodes

+      name="MultiInputPort"

+      figure="MultiInputPortFigure"

+      affixedParentSide="NSEW">

+    <facets

+        xsi:type="gmfgraph:DefaultSizeFacet">

+      <defaultSize

+          dx="20"

+          dy="20"/>

+    </facets>

+  </nodes>

+  <nodes

+      name="SingleOutputPort"

+      figure="SingleOutputPortFigure"

+      affixedParentSide="NSEW">

+    <facets

+        xsi:type="gmfgraph:DefaultSizeFacet">

+      <defaultSize

+          dx="20"

+          dy="20"/>

+    </facets>

+  </nodes>

+  <nodes

+      name="MultiOutputPort"

+      figure="MultiOutputPortFigure"

+      affixedParentSide="NSEW">

+    <facets

+        xsi:type="gmfgraph:DefaultSizeFacet">

+      <defaultSize

+          dx="20"

+          dy="20"/>

+    </facets>

+  </nodes>

+  <connections

+      name="SinglePortMapping"

+      figure="SinglePortMappingFigure"/>

+  <connections

+      name="MultiPortMapping"

+      figure="MultiPortMappingFigure"/>

+  <connections

+      name="MultiSinglePortMapping"

+      figure="MultiSinglePortMappingFigure"/>

+  <compartments

+      name="SequentialUnitHelperUnitsCompartment"

+      figure="SequentialUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.1/@accessors.1"/>

+  <compartments

+      name="SequentialUnitRefactoringUnitsCompartment"

+      figure="SequentialUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.1/@accessors.2"/>

+  <compartments

+      name="ConditionalUnitIfCompartment"

+      figure="ConditionalUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.3/@accessors.1"/>

+  <compartments

+      name="ConditionalUnitHelperUnitsCompartment"

+      figure="ConditionalUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.3/@accessors.2"/>

+  <compartments

+      name="ConditionalUnitThenCompartment"

+      figure="ConditionalUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.3/@accessors.3"/>

+  <compartments

+      name="ConditionalUnitElseCompartment"

+      figure="ConditionalUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.3/@accessors.4"/>

+  <compartments

+      name="SingleQueuedUnitHelperUnitsCompartment"

+      figure="SingleQueuedUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.4/@accessors.1"/>

+  <compartments

+      name="SingleQueuedUnitRefactoringUnitCompartment"

+      figure="SingleQueuedUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.4/@accessors.2"/>

+  <compartments

+      name="CartesianQueuedUnitHelperUnitsCompartment"

+      figure="CartesianQueuedUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.5/@accessors.1"/>

+  <compartments

+      name="CartesianQueuedUnitRefactoringUnitCompartment"

+      figure="CartesianQueuedUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.5/@accessors.2"/>

+  <compartments

+      name="ParallelQueuedUnitHelperUnitsCompartment"

+      figure="ParallelQueuedUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.6/@accessors.1"/>

+  <compartments

+      name="ParallelQueuedUnitRefactoringUnitsCompartment"

+      figure="ParallelQueuedUnitFigure"

+      collapsible="true"

+      accessor="//@figures.0/@descriptors.6/@accessors.2"/>

+  <labels

+      name="AtomicUnitLabel"

+      figure="AtomicUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.0/@accessors.0"/>

+  <labels

+      name="SequentialUnitLabel"

+      figure="SequentialUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.1/@accessors.0"/>

+  <labels

+      name="ConditionCheckLabel"

+      figure="ConditionCheckFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.2/@accessors.0"/>

+  <labels

+      name="ConditionalUnitLabel"

+      figure="ConditionalUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.3/@accessors.0"/>

+  <labels

+      name="SingleQueuedUnitLabel"

+      figure="SingleQueuedUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.4/@accessors.0"/>

+  <labels

+      name="CartesianQueuedUnitLabel"

+      figure="CartesianQueuedUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.5/@accessors.0"/>

+  <labels

+      name="ParallelQueuedUnitLabel"

+      figure="ParallelQueuedUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.6/@accessors.0"/>

+  <labels

+      name="SingleFeatureUnitLabel"

+      figure="SingleFeatureUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.7/@accessors.0"/>

+  <labels

+      name="MultiFeatureUnitLabel"

+      figure="MultiFeatureUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.8/@accessors.0"/>

+  <labels

+      name="SingleFilterUnitLabel"

+      figure="SingleFilterUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.9/@accessors.0"/>

+  <labels

+      name="MultiFilterUnitLabel"

+      figure="MultiFilterUnitFigure"

+      elementIcon="false"

+      accessor="//@figures.0/@descriptors.10/@accessors.0"/>

+  <labels

+      name="SingleInputPortLabel"

+      figure="SingleInputPortLabelFigure"

+      elementIcon="false"/>

+  <labels

+      name="MultiInputPortLabel"

+      figure="MultiInputPortLabelFigure"

+      elementIcon="false"/>

+  <labels

+      name="SingleOutputPortLabel"

+      figure="SingleOutputPortLabelFigure"

+      elementIcon="false"/>

+  <labels

+      name="MultiOutputPortLabel"

+      figure="MultiOutputPortLabelFigure"

+      elementIcon="false"/>

+</gmfgraph:Canvas>

diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.gmfmap b/org.eclipse.emf.refactor.comrel/model/comrel.gmfmap
new file mode 100644
index 0000000..7c8d718
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.gmfmap
@@ -0,0 +1,938 @@
+<?xml version="1.0" encoding="ASCII"?>

+<gmfmap:Mapping 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:gmfmap="http://www.eclipse.org/gmf/2008/mappings"

+    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//ModelRefactoring/inputPorts"/>

+    <ownedChild>

+      <domainMetaElement

+          href="comrel.ecore#//SingleInputPort"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1}"

+          editorPattern="{0}:{1}"

+          editPattern="{0}:{1}">

+        <diagramLabel

+            href="comrel.gmfgraph#SingleInputPortLabel"/>

+        <features

+            href="comrel.ecore#//NamedElement/name"/>

+        <features

+            href="comrel.ecore#//Port/type"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.4/@tools.2"/>

+      <diagramNode

+          href="comrel.gmfgraph#SingleInputPort"/>

+    </ownedChild>

+  </nodes>

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+    <ownedChild

+        relatedDiagrams="//@diagram">

+      <domainMetaElement

+          href="comrel.ecore#//CartesianQueuedUnit"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1} -{2}-"

+          editorPattern="{0}:{1} -{2}-"

+          editPattern="{0}:{1} -{2}-">

+        <diagramLabel

+            href="comrel.gmfgraph#CartesianQueuedUnitLabel"/>

+        <features

+            href="comrel.ecore#//NamedElement/name"/>

+        <features

+            href="comrel.ecore#//CartesianQueuedUnit/type"/>

+        <features

+            href="comrel.ecore#//CartesianQueuedUnit/lblStrict"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.0/@tools.0"/>

+      <diagramNode

+          href="comrel.gmfgraph#CartesianQueuedUnit"/>

+      <children

+          referencedChild="//@nodes.0/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/singleInputPorts"/>

+      </children>

+      <children

+          referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/multiInputPorts"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.2/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.7/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.3/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.1/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//CartesianQueuedUnit/refactoringUnit"/>

+      </children>

+      <compartments

+          children="//@nodes.1/@ownedChild/@children.4 //@nodes.1/@ownedChild/@children.5 //@nodes.1/@ownedChild/@children.6 //@nodes.1/@ownedChild/@children.7">

+        <compartment

+            href="comrel.gmfgraph#CartesianQueuedUnitHelperUnitsCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.1/@ownedChild/@children.2 //@nodes.1/@ownedChild/@children.3 //@nodes.1/@ownedChild/@children.8 //@nodes.1/@ownedChild/@children.9 //@nodes.1/@ownedChild/@children.10 //@nodes.1/@ownedChild/@children.11">

+        <compartment

+            href="comrel.gmfgraph#CartesianQueuedUnitRefactoringUnitCompartment"/>

+      </compartments>

+    </ownedChild>

+  </nodes>

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+    <ownedChild

+        relatedDiagrams="//@diagram">

+      <domainMetaElement

+          href="comrel.ecore#//ParallelQueuedUnit"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1} -{2}-"

+          editorPattern="{0}:{1} -{2}-"

+          editPattern="{0}:{1} -{2}-">

+        <diagramLabel

+            href="comrel.gmfgraph#ParallelQueuedUnitLabel"/>

+        <features

+            href="comrel.ecore#//NamedElement/name"/>

+        <features

+            href="comrel.ecore#//ParallelQueuedUnit/type"/>

+        <features

+            href="comrel.ecore#//ParallelQueuedUnit/lblStrict"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.0/@tools.3"/>

+      <diagramNode

+          href="comrel.gmfgraph#ParallelQueuedUnit"/>

+      <children

+          referencedChild="//@nodes.0/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/singleInputPorts"/>

+      </children>

+      <children

+          referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/multiInputPorts"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.2/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.7/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.3/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.2/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ParallelQueuedUnit/refactoringUnits"/>

+      </children>

+      <compartments

+          children="//@nodes.2/@ownedChild/@children.4 //@nodes.2/@ownedChild/@children.5 //@nodes.2/@ownedChild/@children.6 //@nodes.2/@ownedChild/@children.7">

+        <compartment

+            href="comrel.gmfgraph#ParallelQueuedUnitHelperUnitsCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.2/@ownedChild/@children.2 //@nodes.2/@ownedChild/@children.3 //@nodes.2/@ownedChild/@children.8 //@nodes.2/@ownedChild/@children.9 //@nodes.2/@ownedChild/@children.10 //@nodes.2/@ownedChild/@children.11">

+        <compartment

+            href="comrel.gmfgraph#ParallelQueuedUnitRefactoringUnitsCompartment"/>

+      </compartments>

+    </ownedChild>

+  </nodes>

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+    <ownedChild

+        relatedDiagrams="//@diagram">

+      <domainMetaElement

+          href="comrel.ecore#//SingleQueuedUnit"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1} -{2}-"

+          editorPattern="{0}:{1} -{2}-"

+          editPattern="{0}:{1} -{2}-">

+        <diagramLabel

+            href="comrel.gmfgraph#SingleQueuedUnitLabel"/>

+        <features

+            href="comrel.ecore#//NamedElement/name"/>

+        <features

+            href="comrel.ecore#//SingleQueuedUnit/type"/>

+        <features

+            href="comrel.ecore#//SingleQueuedUnit/lblStrict"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.0/@tools.5"/>

+      <diagramNode

+          href="comrel.gmfgraph#SingleQueuedUnit"/>

+      <children

+          referencedChild="//@nodes.0/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/singleInputPorts"/>

+      </children>

+      <children

+          referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/multiInputPort"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.2/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.0"

+          referencedChild="//@nodes.4/@ownedChild/@children.7/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.3/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      </children>

+      <children

+          compartment="//@nodes.3/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SingleQueuedUnit/refactoringUnit"/>

+      </children>

+      <compartments

+          children="//@nodes.3/@ownedChild/@children.4 //@nodes.3/@ownedChild/@children.5 //@nodes.3/@ownedChild/@children.6 //@nodes.3/@ownedChild/@children.7">

+        <compartment

+            href="comrel.gmfgraph#SingleQueuedUnitHelperUnitsCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.3/@ownedChild/@children.2 //@nodes.3/@ownedChild/@children.3 //@nodes.3/@ownedChild/@children.8 //@nodes.3/@ownedChild/@children.9 //@nodes.3/@ownedChild/@children.10 //@nodes.3/@ownedChild/@children.11">

+        <compartment

+            href="comrel.gmfgraph#SingleQueuedUnitRefactoringUnitCompartment"/>

+      </compartments>

+    </ownedChild>

+  </nodes>

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+    <ownedChild

+        relatedDiagrams="//@diagram">

+      <domainMetaElement

+          href="comrel.ecore#//SequentialUnit"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1} -{2}-"

+          editorPattern="{0}:{1} -{2}-"

+          editPattern="{0}:{1} -{2}-">

+        <diagramLabel

+            href="comrel.gmfgraph#SequentialUnitLabel"/>

+        <features

+            href="comrel.ecore#//NamedElement/name"/>

+        <features

+            href="comrel.ecore#//SequentialUnit/type"/>

+        <features

+            href="comrel.ecore#//SequentialUnit/lblStrict"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.0/@tools.4"/>

+      <diagramNode

+          href="comrel.gmfgraph#SequentialUnit"/>

+      <children

+          referencedChild="//@nodes.0/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/inputPorts"/>

+      </children>

+      <children>

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/inputPorts"/>

+        <ownedChild>

+          <domainMetaElement

+              href="comrel.ecore#//MultiInputPort"/>

+          <labelMappings

+              xsi:type="gmfmap:FeatureLabelMapping"

+              viewPattern="{0}:{1}"

+              editorPattern="{0}:{1}"

+              editPattern="{0}:{1}">

+            <diagramLabel

+                href="comrel.gmfgraph#MultiInputPortLabel"/>

+            <features

+                href="comrel.ecore#//NamedElement/name"/>

+            <features

+                href="comrel.ecore#//Port/type"/>

+          </labelMappings>

+          <tool

+              xsi:type="gmftool:CreationTool"

+              href="comrel.gmftool#//@palette/@tools.4/@tools.0"/>

+          <diagramNode

+              href="comrel.gmfgraph#MultiInputPort"/>

+        </ownedChild>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.2/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.0">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/helperUnits"/>

+        <ownedChild>

+          <domainMetaElement

+              href="comrel.ecore#//SingleFeatureUnit"/>

+          <labelMappings

+              xsi:type="gmfmap:FeatureLabelMapping"

+              viewPattern="{0}:{1}"

+              editorPattern="{0}:{1}"

+              editPattern="{0}:{1}">

+            <diagramLabel

+                href="comrel.gmfgraph#SingleFeatureUnitLabel"/>

+            <features

+                href="comrel.ecore#//NamedElement/name"/>

+            <features

+                href="comrel.ecore#//SingleFeatureUnit/type"/>

+          </labelMappings>

+          <tool

+              xsi:type="gmftool:CreationTool"

+              href="comrel.gmftool#//@palette/@tools.3/@tools.1"/>

+          <diagramNode

+              href="comrel.gmfgraph#SingleFeatureUnit"/>

+          <children

+              referencedChild="//@nodes.0/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//SingleFeatureUnit/inputPort"/>

+          </children>

+          <children

+              referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//SingleFeatureUnit/secondaryInputPorts"/>

+          </children>

+          <children>

+            <containmentFeature

+                href="comrel.ecore#//SingleFeatureUnit/outputPort"/>

+            <ownedChild>

+              <domainMetaElement

+                  href="comrel.ecore#//SingleOutputPort"/>

+              <labelMappings

+                  xsi:type="gmfmap:FeatureLabelMapping"

+                  viewPattern="{0}:{1}"

+                  editorPattern="{0}:{1}"

+                  editPattern="{0}:{1}">

+                <diagramLabel

+                    href="comrel.gmfgraph#SingleOutputPortLabel"/>

+                <features

+                    href="comrel.ecore#//NamedElement/name"/>

+                <features

+                    href="comrel.ecore#//Port/type"/>

+              </labelMappings>

+              <tool

+                  xsi:type="gmftool:CreationTool"

+                  href="comrel.gmftool#//@palette/@tools.4/@tools.3"/>

+              <diagramNode

+                  href="comrel.gmfgraph#SingleOutputPort"/>

+            </ownedChild>

+          </children>

+        </ownedChild>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.0">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/helperUnits"/>

+        <ownedChild>

+          <domainMetaElement

+              href="comrel.ecore#//MultiFeatureUnit"/>

+          <labelMappings

+              xsi:type="gmfmap:FeatureLabelMapping"

+              viewPattern="{0}:{1}"

+              editorPattern="{0}:{1}"

+              editPattern="{0}:{1}">

+            <diagramLabel

+                href="comrel.gmfgraph#MultiFeatureUnitLabel"/>

+            <features

+                href="comrel.ecore#//NamedElement/name"/>

+            <features

+                href="comrel.ecore#//MultiFeatureUnit/type"/>

+          </labelMappings>

+          <tool

+              xsi:type="gmftool:CreationTool"

+              href="comrel.gmftool#//@palette/@tools.3/@tools.0"/>

+          <diagramNode

+              href="comrel.gmfgraph#MultiFeatureUnit"/>

+          <children

+              referencedChild="//@nodes.0/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//MultiFeatureUnit/inputPort"/>

+          </children>

+          <children

+              referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//MultiFeatureUnit/secondaryInputPorts"/>

+          </children>

+          <children>

+            <containmentFeature

+                href="comrel.ecore#//MultiFeatureUnit/outputPort"/>

+            <ownedChild>

+              <domainMetaElement

+                  href="comrel.ecore#//MultiOutputPort"/>

+              <labelMappings

+                  xsi:type="gmfmap:FeatureLabelMapping"

+                  viewPattern="{0}:{1}"

+                  editorPattern="{0}:{1}"

+                  editPattern="{0}:{1}">

+                <diagramLabel

+                    href="comrel.gmfgraph#MultiOutputPortLabel"/>

+                <features

+                    href="comrel.ecore#//NamedElement/name"/>

+                <features

+                    href="comrel.ecore#//Port/type"/>

+              </labelMappings>

+              <tool

+                  xsi:type="gmftool:CreationTool"

+                  href="comrel.gmftool#//@palette/@tools.4/@tools.1"/>

+              <diagramNode

+                  href="comrel.gmfgraph#MultiOutputPort"/>

+            </ownedChild>

+          </children>

+        </ownedChild>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.0">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/helperUnits"/>

+        <ownedChild>

+          <domainMetaElement

+              href="comrel.ecore#//SingleFilterUnit"/>

+          <labelMappings

+              xsi:type="gmfmap:FeatureLabelMapping"

+              viewPattern="{0}:{1}"

+              editorPattern="{0}:{1}"

+              editPattern="{0}:{1}">

+            <diagramLabel

+                href="comrel.gmfgraph#SingleFilterUnitLabel"/>

+            <features

+                href="comrel.ecore#//NamedElement/name"/>

+            <features

+                href="comrel.ecore#//SingleFilterUnit/type"/>

+          </labelMappings>

+          <tool

+              xsi:type="gmftool:CreationTool"

+              href="comrel.gmftool#//@palette/@tools.2/@tools.1"/>

+          <diagramNode

+              href="comrel.gmfgraph#SingleFilterUnit"/>

+          <children

+              referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//SingleFilterUnit/inputPort"/>

+          </children>

+          <children

+              referencedChild="//@nodes.4/@ownedChild/@children.4/@ownedChild/@children.2/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//SingleFilterUnit/outputPort"/>

+          </children>

+        </ownedChild>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.0">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/helperUnits"/>

+        <ownedChild>

+          <domainMetaElement

+              href="comrel.ecore#//MultiFilterUnit"/>

+          <labelMappings

+              xsi:type="gmfmap:FeatureLabelMapping"

+              viewPattern="{0}:{1}"

+              editorPattern="{0}:{1}"

+              editPattern="{0}:{1}">

+            <diagramLabel

+                href="comrel.gmfgraph#MultiFilterUnitLabel"/>

+            <features

+                href="comrel.ecore#//NamedElement/name"/>

+            <features

+                href="comrel.ecore#//MultiFilterUnit/type"/>

+          </labelMappings>

+          <tool

+              xsi:type="gmftool:CreationTool"

+              href="comrel.gmftool#//@palette/@tools.2/@tools.0"/>

+          <diagramNode

+              href="comrel.gmfgraph#MultiFilterUnit"/>

+          <children

+              referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//MultiFilterUnit/inputPort"/>

+          </children>

+          <children

+              referencedChild="//@nodes.4/@ownedChild/@children.5/@ownedChild/@children.2/@ownedChild">

+            <containmentFeature

+                href="comrel.ecore#//MultiFilterUnit/outputPort"/>

+          </children>

+        </ownedChild>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.3/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.4/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//SequentialUnit/refactoringUnits"/>

+      </children>

+      <compartments

+          children="//@nodes.4/@ownedChild/@children.4 //@nodes.4/@ownedChild/@children.5 //@nodes.4/@ownedChild/@children.6 //@nodes.4/@ownedChild/@children.7">

+        <compartment

+            href="comrel.gmfgraph#SequentialUnitHelperUnitsCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.4/@ownedChild/@children.2 //@nodes.4/@ownedChild/@children.3 //@nodes.4/@ownedChild/@children.8 //@nodes.4/@ownedChild/@children.9 //@nodes.4/@ownedChild/@children.10 //@nodes.4/@ownedChild/@children.11">

+        <compartment

+            href="comrel.gmfgraph#SequentialUnitRefactoringUnitsCompartment"/>

+      </compartments>

+    </ownedChild>

+  </nodes>

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+    <ownedChild

+        relatedDiagrams="//@diagram">

+      <domainMetaElement

+          href="comrel.ecore#//ConditionalUnit"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1}"

+          editorPattern="{0}:{1}"

+          editPattern="{0}:{1}">

+        <diagramLabel

+            href="comrel.gmfgraph#ConditionalUnitLabel"/>

+        <features

+            href="comrel.ecore#//NamedElement/name"/>

+        <features

+            href="comrel.ecore#//ConditionalUnit/type"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.0/@tools.2"/>

+      <diagramNode

+          href="comrel.gmfgraph#ConditionalUnit"/>

+      <children

+          referencedChild="//@nodes.0/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/inputPorts"/>

+      </children>

+      <children

+          referencedChild="//@nodes.4/@ownedChild/@children.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/inputPorts"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.2"

+          referencedChild="//@nodes.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/then"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.2"

+          referencedChild="//@nodes.2/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/then"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.3"

+          referencedChild="//@nodes.1/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/else"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.3"

+          referencedChild="//@nodes.2/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/else"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild/@children.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild/@children.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild/@children.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.1"

+          referencedChild="//@nodes.4/@ownedChild/@children.7/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/helperUnits"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.2"

+          referencedChild="//@nodes.3/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/then"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.3"

+          referencedChild="//@nodes.3/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/else"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.2"

+          referencedChild="//@nodes.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/then"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.2"

+          referencedChild="//@nodes.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/then"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.3"

+          referencedChild="//@nodes.4/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/else"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.3"

+          referencedChild="//@nodes.5/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/else"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.0">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/if"/>

+        <ownedChild>

+          <domainMetaElement

+              href="comrel.ecore#//ConditionCheck"/>

+          <labelMappings

+              xsi:type="gmfmap:FeatureLabelMapping"

+              viewPattern="{0}:{1} -{2}-"

+              editorPattern="{0}:{1} -{2}-"

+              editPattern="{0}:{1} -{2}-">

+            <diagramLabel

+                href="comrel.gmfgraph#ConditionCheckLabel"/>

+            <features

+                href="comrel.ecore#//NamedElement/name"/>

+            <features

+                href="comrel.ecore#//ConditionCheck/type"/>

+            <features

+                href="comrel.ecore#//ConditionCheck/spec"/>

+          </labelMappings>

+          <tool

+              xsi:type="gmftool:CreationTool"

+              href="comrel.gmftool#//@palette/@tools.0/@tools.1"/>

+          <diagramNode

+              href="comrel.gmfgraph#ConditionCheck"/>

+        </ownedChild>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.2"

+          referencedChild="//@nodes.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/then"/>

+      </children>

+      <children

+          compartment="//@nodes.5/@ownedChild/@compartments.3"

+          referencedChild="//@nodes.6/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//ConditionalUnit/else"/>

+      </children>

+      <compartments

+          children="//@nodes.5/@ownedChild/@children.16">

+        <compartment

+            href="comrel.gmfgraph#ConditionalUnitIfCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.5/@ownedChild/@children.6 //@nodes.5/@ownedChild/@children.7 //@nodes.5/@ownedChild/@children.8 //@nodes.5/@ownedChild/@children.9">

+        <compartment

+            href="comrel.gmfgraph#ConditionalUnitHelperUnitsCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.5/@ownedChild/@children.2 //@nodes.5/@ownedChild/@children.3 //@nodes.5/@ownedChild/@children.10 //@nodes.5/@ownedChild/@children.12 //@nodes.5/@ownedChild/@children.13 //@nodes.5/@ownedChild/@children.17">

+        <compartment

+            href="comrel.gmfgraph#ConditionalUnitThenCompartment"/>

+      </compartments>

+      <compartments

+          children="//@nodes.5/@ownedChild/@children.4 //@nodes.5/@ownedChild/@children.5 //@nodes.5/@ownedChild/@children.11 //@nodes.5/@ownedChild/@children.14 //@nodes.5/@ownedChild/@children.15 //@nodes.5/@ownedChild/@children.18">

+        <compartment

+            href="comrel.gmfgraph#ConditionalUnitElseCompartment"/>

+      </compartments>

+    </ownedChild>

+  </nodes>

+  <nodes>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/mainRefactoringUnit"/>

+    <ownedChild>

+      <domainMetaElement

+          href="comrel.ecore#//AtomicUnit"/>

+      <labelMappings

+          xsi:type="gmfmap:FeatureLabelMapping"

+          viewPattern="{0}:{1}"

+          editorPattern="{0}:{1}"

+          editPattern="{0}:{1}">

+        <diagramLabel

+            href="comrel.gmfgraph#AtomicUnitLabel"/>

+        <features

+            href="comrel.ecore#//AtomicUnit/label"/>

+        <features

+            href="comrel.ecore#//AtomicUnit/type"/>

+      </labelMappings>

+      <tool

+          xsi:type="gmftool:CreationTool"

+          href="comrel.gmftool#//@palette/@tools.1/@tools.0"/>

+      <diagramNode

+          href="comrel.gmfgraph#AtomicUnit"/>

+      <children

+          referencedChild="//@nodes.0/@ownedChild">

+        <containmentFeature

+            href="comrel.ecore#//AtomicUnit/inputPorts"/>

+      </children>

+    </ownedChild>

+  </nodes>

+  <links>

+    <domainMetaElement

+        href="comrel.ecore#//SinglePortMapping"/>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/portMappings"/>

+    <tool

+        xsi:type="gmftool:CreationTool"

+        href="comrel.gmftool#//@palette/@tools.5/@tools.2"/>

+    <diagramLink

+        href="comrel.gmfgraph#SinglePortMapping"/>

+    <sourceMetaFeature

+        xsi:type="ecore:EReference"

+        href="comrel.ecore#//SinglePortMapping/source"/>

+    <linkMetaFeature

+        xsi:type="ecore:EReference"

+        href="comrel.ecore#//SinglePortMapping/target"/>

+    <creationConstraints>

+      <sourceEnd

+          body="self&lt;>oppositeEnd"/>

+    </creationConstraints>

+  </links>

+  <links>

+    <domainMetaElement

+        href="comrel.ecore#//MultiPortMapping"/>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/portMappings"/>

+    <tool

+        xsi:type="gmftool:CreationTool"

+        href="comrel.gmftool#//@palette/@tools.5/@tools.0"/>

+    <diagramLink

+        href="comrel.gmfgraph#MultiPortMapping"/>

+    <sourceMetaFeature

+        xsi:type="ecore:EReference"

+        href="comrel.ecore#//MultiPortMapping/source"/>

+    <linkMetaFeature

+        xsi:type="ecore:EReference"

+        href="comrel.ecore#//MultiPortMapping/target"/>

+    <creationConstraints>

+      <sourceEnd

+          body="self&lt;>oppositeEnd"/>

+    </creationConstraints>

+  </links>

+  <links>

+    <domainMetaElement

+        href="comrel.ecore#//MultiSinglePortMapping"/>

+    <containmentFeature

+        href="comrel.ecore#//CompositeRefactoring/portMappings"/>

+    <tool

+        xsi:type="gmftool:CreationTool"

+        href="comrel.gmftool#//@palette/@tools.5/@tools.1"/>

+    <diagramLink

+        href="comrel.gmfgraph#MultiSinglePortMapping"/>

+    <sourceMetaFeature

+        xsi:type="ecore:EReference"

+        href="comrel.ecore#//MultiSinglePortMapping/source"/>

+    <linkMetaFeature

+        xsi:type="ecore:EReference"

+        href="comrel.ecore#//MultiSinglePortMapping/target"/>

+    <creationConstraints>

+      <sourceEnd

+          body="self&lt;>oppositeEnd"/>

+    </creationConstraints>

+  </links>

+  <diagram>

+    <diagramCanvas

+        href="comrel.gmfgraph#comrel"/>

+    <domainModel

+        href="comrel.ecore#/"/>

+    <domainMetaElement

+        href="comrel.ecore#//CompositeRefactoring"/>

+    <palette

+        href="comrel.gmftool#//@palette"/>

+  </diagram>

+</gmfmap:Mapping>

diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.gmftool b/org.eclipse.emf.refactor.comrel/model/comrel.gmftool
new file mode 100644
index 0000000..210e275
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.gmftool
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ASCII"?>

+<gmftool:ToolRegistry xmi:version="2.0"

+    xmlns:xmi="http://www.omg.org/XMI"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">

+  <palette

+      title="comrelPalette">

+    <tools

+        xsi:type="gmftool:ToolGroup"

+        title="Composite Units"

+        collapsible="true">

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="CartesianQueuedUnit"

+          description="Create new CartesianQueuedUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="ConditionCheck"

+          description="Create new ConditionCheck">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="ConditionalUnit"

+          description="Create new ConditionalUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="ParallelQueuedUnit"

+          description="Create new ParallelQueuedUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SequentialUnit"

+          description="Create new SequentialUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SingleQueuedUnit"

+          description="Create new SingleQueuedUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+    </tools>

+    <tools

+        xsi:type="gmftool:ToolGroup"

+        title="Atomic Units"

+        collapsible="true">

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="AtomicUnit"

+          description="Create new AtomicUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+    </tools>

+    <tools

+        xsi:type="gmftool:ToolGroup"

+        title="Filter Units"

+        collapsible="true">

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="MultiFilterUnit"

+          description="Create new MultiFilterUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SingleFilterUnit"

+          description="Create new SingleFilterUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+    </tools>

+    <tools

+        xsi:type="gmftool:ToolGroup"

+        title="Feature Units"

+        collapsible="true">

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="MultiFeatureUnit"

+          description="Create new MultiFeatureUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SingleFeatureUnit"

+          description="Create new SingleFeatureUnit">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+    </tools>

+    <tools

+        xsi:type="gmftool:ToolGroup"

+        title="Ports"

+        collapsible="true">

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="MultiInputPort"

+          description="Create new MultiInputPort">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="MultiOutputPort"

+          description="Create new MultiOutputPort">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SingleInputPort"

+          description="Create new SingleInputPort">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SingleOutputPort"

+          description="Create new SingleOutputPort">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+    </tools>

+    <tools

+        xsi:type="gmftool:ToolGroup"

+        title="Mappings"

+        collapsible="true">

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="MultiPortMapping"

+          description="Create new MultiPortMapping">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="MultiSinglePortMapping"

+          description="Create new MultiSinglePortMapping">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+      <tools

+          xsi:type="gmftool:CreationTool"

+          title="SinglePortMapping"

+          description="Create new SinglePortMapping">

+        <smallIcon

+            xsi:type="gmftool:DefaultImage"/>

+        <largeIcon

+            xsi:type="gmftool:DefaultImage"/>

+      </tools>

+    </tools>

+  </palette>

+</gmftool:ToolRegistry>

diff --git a/org.eclipse.emf.refactor.comrel/model/comrel.trace b/org.eclipse.emf.refactor.comrel/model/comrel.trace
new file mode 100644
index 0000000..638fbd4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/model/comrel.trace
@@ -0,0 +1,861 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<trace:TraceModel xmi:version="2.0"

+    xmlns:xmi="http://www.omg.org/XMI"

+    xmlns:trace="http://www.eclipse.org/gmf/2006/Trace">

+  <nodeTraces

+      visualID="2001"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ModelRefactoring') and _containmentMF_.name = 'inputPorts')">

+    <nodeLabelTraces

+        visualID="5001"

+        queryText="true"/>

+  </nodeTraces>

+  <nodeTraces

+      visualID="2002"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CompositeRefactoring') and _containmentMF_.name = 'mainRefactoringUnit')">

+    <nodeLabelTraces

+        visualID="5080"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7001"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7002"

+        queryText="true"/>

+  </nodeTraces>

+  <nodeTraces

+      visualID="2003"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CompositeRefactoring') and _containmentMF_.name = 'mainRefactoringUnit')">

+    <nodeLabelTraces

+        visualID="5081"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7075"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7076"

+        queryText="true"/>

+  </nodeTraces>

+  <nodeTraces

+      visualID="2004"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CompositeRefactoring') and _containmentMF_.name = 'mainRefactoringUnit')">

+    <nodeLabelTraces

+        visualID="5082"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7077"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7078"

+        queryText="true"/>

+  </nodeTraces>

+  <nodeTraces

+      visualID="2005"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CompositeRefactoring') and _containmentMF_.name = 'mainRefactoringUnit')">

+    <nodeLabelTraces

+        visualID="5083"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7079"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7080"

+        queryText="true"/>

+  </nodeTraces>

+  <nodeTraces

+      visualID="2006"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CompositeRefactoring') and _containmentMF_.name = 'mainRefactoringUnit')">

+    <nodeLabelTraces

+        visualID="5084"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7081"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7082"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7083"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7084"

+        queryText="true"/>

+  </nodeTraces>

+  <nodeTraces

+      visualID="2007"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CompositeRefactoring') and _containmentMF_.name = 'mainRefactoringUnit')">

+    <nodeLabelTraces

+        visualID="5085"

+        queryText="true"/>

+  </nodeTraces>

+  <childNodeTraces

+      visualID="3001"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'singleInputPorts')">

+    <nodeLabelTraces

+        visualID="5002"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3002"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'multiInputPorts')">

+    <nodeLabelTraces

+        visualID="5003"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3003"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5079"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7003"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7004"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3004"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5078"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7005"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7006"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3005"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'singleInputPorts')">

+    <nodeLabelTraces

+        visualID="5004"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3006"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'multiInputPorts')">

+    <nodeLabelTraces

+        visualID="5005"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3007"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5077"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7007"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7008"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3008"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5009"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3009"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and _containmentMF_.name = 'inputPort')">

+    <nodeLabelTraces

+        visualID="5006"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3010"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and _containmentMF_.name = 'secondaryInputPorts')">

+    <nodeLabelTraces

+        visualID="5007"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3011"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleOutputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and _containmentMF_.name = 'outputPort')">

+    <nodeLabelTraces

+        visualID="5008"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3012"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5013"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3013"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and _containmentMF_.name = 'inputPort')">

+    <nodeLabelTraces

+        visualID="5010"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3014"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and _containmentMF_.name = 'secondaryInputPorts')">

+    <nodeLabelTraces

+        visualID="5011"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3015"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiOutputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and _containmentMF_.name = 'outputPort')">

+    <nodeLabelTraces

+        visualID="5012"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3016"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5016"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3017"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and _containmentMF_.name = 'inputPort')">

+    <nodeLabelTraces

+        visualID="5014"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3018"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleOutputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and _containmentMF_.name = 'outputPort')">

+    <nodeLabelTraces

+        visualID="5015"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3019"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5019"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3020"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and _containmentMF_.name = 'inputPort')">

+    <nodeLabelTraces

+        visualID="5017"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3021"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiOutputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and _containmentMF_.name = 'outputPort')">

+    <nodeLabelTraces

+        visualID="5018"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3022"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5076"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7009"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7010"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3023"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'singleInputPorts')">

+    <nodeLabelTraces

+        visualID="5020"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3024"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'multiInputPort')">

+    <nodeLabelTraces

+        visualID="5021"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3025"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5075"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7011"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7012"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3026"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5074"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7013"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7014"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3027"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'inputPorts')">

+    <nodeLabelTraces

+        visualID="5022"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3028"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'inputPorts')">

+    <nodeLabelTraces

+        visualID="5023"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3029"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5073"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7015"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7016"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3030"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5072"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7017"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7018"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7019"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7020"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3031"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'inputPorts')">

+    <nodeLabelTraces

+        visualID="5024"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3032"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'inputPorts')">

+    <nodeLabelTraces

+        visualID="5025"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3033"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'then')">

+    <nodeLabelTraces

+        visualID="5028"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7021"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7022"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3034"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5027"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3035"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleInputPort') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and _containmentMF_.name = 'inputPorts')">

+    <nodeLabelTraces

+        visualID="5026"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3036"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'then')">

+    <nodeLabelTraces

+        visualID="5071"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7023"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7024"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3037"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5070"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7025"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7026"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3038"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5029"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3039"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5030"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3040"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5031"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3041"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5032"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3042"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5069"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7027"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7028"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3043"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5068"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7029"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7030"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3044"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5067"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7031"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7032"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3045"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5066"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7033"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7034"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3046"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5065"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7035"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7036"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7037"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7038"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3047"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'CartesianQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'else')">

+    <nodeLabelTraces

+        visualID="5033"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7039"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7040"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3048"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'else')">

+    <nodeLabelTraces

+        visualID="5035"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7041"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7042"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3049"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ParallelQueuedUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5034"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3050"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5036"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3051"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5037"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3052"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5038"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3053"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5039"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3054"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'then')">

+    <nodeLabelTraces

+        visualID="5064"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7043"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7044"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3055"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5040"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3056"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5041"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3057"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5042"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3058"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5043"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3059"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5063"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7045"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7046"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3060"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5062"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7047"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7048"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3061"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5044"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3062"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFeatureUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5045"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3063"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5046"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3064"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiFilterUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'helperUnits')">

+    <nodeLabelTraces

+        visualID="5047"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3065"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5061"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7049"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7050"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3066"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5060"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7051"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7052"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7053"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7054"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3067"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'else')">

+    <nodeLabelTraces

+        visualID="5049"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7055"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7056"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3068"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SingleQueuedUnit') and _containmentMF_.name = 'refactoringUnit')">

+    <nodeLabelTraces

+        visualID="5048"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3069"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'then')">

+    <nodeLabelTraces

+        visualID="5059"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7057"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7058"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3070"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5058"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7059"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7060"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3071"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5057"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7061"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7062"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7063"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7064"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3072"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'then')">

+    <nodeLabelTraces

+        visualID="5056"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7065"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7066"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7067"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7068"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3073"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'else')">

+    <nodeLabelTraces

+        visualID="5051"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7069"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7070"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3074"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SequentialUnit') and _containmentMF_.name = 'refactoringUnits')">

+    <nodeLabelTraces

+        visualID="5050"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3075"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'else')">

+    <nodeLabelTraces

+        visualID="5055"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7071"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7072"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7073"

+        queryText="true"/>

+    <compartmentTraces

+        visualID="7074"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3076"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionCheck') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'if')">

+    <nodeLabelTraces

+        visualID="5052"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3077"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'then')">

+    <nodeLabelTraces

+        visualID="5053"

+        queryText="true"/>

+  </childNodeTraces>

+  <childNodeTraces

+      visualID="3078"

+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'AtomicUnit') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'ConditionalUnit') and _containmentMF_.name = 'else')">

+    <nodeLabelTraces

+        visualID="5054"

+        queryText="true"/>

+  </childNodeTraces>

+  <linkTraces

+      visualID="4001"

+      queryText="modelFacet.oclIsKindOf(gmfgen::TypeLinkModelFacet) and (let _eClass_:ecore::EClass = modelFacet.oclAsType(gmfgen::TypeLinkModelFacet).metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'SinglePortMapping')"/>

+  <linkTraces

+      visualID="4002"

+      queryText="modelFacet.oclIsKindOf(gmfgen::TypeLinkModelFacet) and (let _eClass_:ecore::EClass = modelFacet.oclAsType(gmfgen::TypeLinkModelFacet).metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiPortMapping')"/>

+  <linkTraces

+      visualID="4003"

+      queryText="modelFacet.oclIsKindOf(gmfgen::TypeLinkModelFacet) and (let _eClass_:ecore::EClass = modelFacet.oclAsType(gmfgen::TypeLinkModelFacet).metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://comrel/0.1' and _eClass_.name = 'MultiSinglePortMapping')"/>

+</trace:TraceModel>

diff --git a/org.eclipse.emf.refactor.comrel/plugin.properties b/org.eclipse.emf.refactor.comrel/plugin.properties
new file mode 100644
index 0000000..be7ec60
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/plugin.properties
@@ -0,0 +1,8 @@
+

+# <copyright>

+# </copyright>

+#

+# $Id$

+

+pluginName = Comrel Model

+providerName = www.example.org

diff --git a/org.eclipse.emf.refactor.comrel/plugin.xml b/org.eclipse.emf.refactor.comrel/plugin.xml
new file mode 100644
index 0000000..fb0a6f4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.0"?>

+

+<!--

+ <copyright>

+ </copyright>

+

+ $Id$

+-->

+

+<plugin>

+   <extension-point id="singlefilter" name="singlefilter" schema="schema/singlefilter.exsd"/>

+   <extension-point id="multifilter" name="multifilter" schema="schema/multifilter.exsd"/>

+   <extension-point id="singlefeature" name="singlefeature" schema="schema/singlefeature.exsd"/>

+   <extension-point id="multifeature" name="multifeature" schema="schema/multifeature.exsd"/>

+   

+

+   <extension point="org.eclipse.emf.ecore.generated_package">

+      <package

+            uri="http://comrel/0.1"

+            class="comrel.ComrelPackage"

+            genModel="model/comrel.genmodel"/>

+   </extension>

+

+</plugin>

diff --git a/org.eclipse.emf.refactor.comrel/schema/multifeature.exsd b/org.eclipse.emf.refactor.comrel/schema/multifeature.exsd
new file mode 100644
index 0000000..9331bdf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/schema/multifeature.exsd
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="comrel" xmlns="http://www.w3.org/2001/XMLSchema">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="comrel" id="multifeature" name="multifeature"/>

+      </appInfo>

+      <documentation>

+         [Enter description of this extension point.]

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <annotation>

+         <appInfo>

+            <meta.element />

+         </appInfo>

+      </annotation>

+      <complexType>

+         <sequence minOccurs="1" maxOccurs="unbounded">

+            <element ref="multifeature"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute translatable="true"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="multifeature">

+      <complexType>

+         <attribute name="name" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="namespaceUri" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="description" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="class" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn=":comrel.extensions.IMultiFeatureHelper"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="since"/>

+      </appInfo>

+      <documentation>

+         [Enter the first release in which this extension point appears.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         [Enter extension point usage example here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiinfo"/>

+      </appInfo>

+      <documentation>

+         [Enter API information here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="implementation"/>

+      </appInfo>

+      <documentation>

+         [Enter information about supplied implementation of this extension point.]

+      </documentation>

+   </annotation>

+

+

+</schema>

diff --git a/org.eclipse.emf.refactor.comrel/schema/multifilter.exsd b/org.eclipse.emf.refactor.comrel/schema/multifilter.exsd
new file mode 100644
index 0000000..f815787
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/schema/multifilter.exsd
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="comrel" xmlns="http://www.w3.org/2001/XMLSchema">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="comrel" id="multifilter" name="multifilter"/>

+      </appInfo>

+      <documentation>

+         [Enter description of this extension point.]

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <annotation>

+         <appInfo>

+            <meta.element />

+         </appInfo>

+      </annotation>

+      <complexType>

+         <sequence minOccurs="1" maxOccurs="unbounded">

+            <element ref="multifilter"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute translatable="true"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="multifilter">

+      <complexType>

+         <attribute name="name" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="namespaceUri" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="description" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="class" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn=":comrel.extensions.IMultiFilterHelper"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="since"/>

+      </appInfo>

+      <documentation>

+         [Enter the first release in which this extension point appears.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         [Enter extension point usage example here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiinfo"/>

+      </appInfo>

+      <documentation>

+         [Enter API information here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="implementation"/>

+      </appInfo>

+      <documentation>

+         [Enter information about supplied implementation of this extension point.]

+      </documentation>

+   </annotation>

+

+

+</schema>

diff --git a/org.eclipse.emf.refactor.comrel/schema/singlefeature.exsd b/org.eclipse.emf.refactor.comrel/schema/singlefeature.exsd
new file mode 100644
index 0000000..b290dbb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/schema/singlefeature.exsd
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="comrel" xmlns="http://www.w3.org/2001/XMLSchema">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="comrel" id="singlefeature" name="singlefeature"/>

+      </appInfo>

+      <documentation>

+         [Enter description of this extension point.]

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <annotation>

+         <appInfo>

+            <meta.element />

+         </appInfo>

+      </annotation>

+      <complexType>

+         <sequence minOccurs="1" maxOccurs="unbounded">

+            <element ref="singlefeature"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute translatable="true"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="singlefeature">

+      <complexType>

+         <attribute name="name" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="namespaceUri" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="description" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="class" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn=":comrel.extensions.ISingleFeatureHelper"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="since"/>

+      </appInfo>

+      <documentation>

+         [Enter the first release in which this extension point appears.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         [Enter extension point usage example here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiinfo"/>

+      </appInfo>

+      <documentation>

+         [Enter API information here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="implementation"/>

+      </appInfo>

+      <documentation>

+         [Enter information about supplied implementation of this extension point.]

+      </documentation>

+   </annotation>

+

+

+</schema>

diff --git a/org.eclipse.emf.refactor.comrel/schema/singlefilter.exsd b/org.eclipse.emf.refactor.comrel/schema/singlefilter.exsd
new file mode 100644
index 0000000..9f02e8c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/schema/singlefilter.exsd
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="comrel" xmlns="http://www.w3.org/2001/XMLSchema">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="comrel" id="singlefilter" name="singlefilter"/>

+      </appInfo>

+      <documentation>

+         [Enter description of this extension point.]

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <annotation>

+         <appInfo>

+            <meta.element />

+         </appInfo>

+      </annotation>

+      <complexType>

+         <sequence minOccurs="1" maxOccurs="unbounded">

+            <element ref="singlefilter"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute translatable="true"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="singlefilter">

+      <complexType>

+         <attribute name="name" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="namespaceUri" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="description" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="class" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn=":comrel.extensions.ISingleFilterHelper"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="since"/>

+      </appInfo>

+      <documentation>

+         [Enter the first release in which this extension point appears.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         [Enter extension point usage example here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiinfo"/>

+      </appInfo>

+      <documentation>

+         [Enter API information here.]

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="implementation"/>

+      </appInfo>

+      <documentation>

+         [Enter information about supplied implementation of this extension point.]

+      </documentation>

+   </annotation>

+

+

+</schema>

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/AtomicUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/AtomicUnit.java
new file mode 100644
index 0000000..208755c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/AtomicUnit.java
@@ -0,0 +1,226 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Atomic Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.AtomicUnit#getInputPorts <em>Input Ports</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#getUnitId <em>Unit Id</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#getLabel <em>Label</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#getNamespaceUri <em>Namespace Uri</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#getModelRefactoring <em>Model Refactoring</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#isCheckInitialConditionFlag <em>Check Initial Condition Flag</em>}</li>

+ *   <li>{@link comrel.AtomicUnit#isCheckFinalConditionFlag <em>Check Final Condition Flag</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getAtomicUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='label,type' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface AtomicUnit extends RefactoringUnit {

+	/**

+	 * Returns the value of the '<em><b>Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.SingleInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Ports</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>Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getAtomicUnit_InputPorts()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<SingleInputPort> getInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Unit Id</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Unit Id</em>' attribute.

+	 * @see #setUnitId(String)

+	 * @see comrel.ComrelPackage#getAtomicUnit_UnitId()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getUnitId();

+

+	/**

+	 * Sets the value of the '{@link comrel.AtomicUnit#getUnitId <em>Unit Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Unit Id</em>' attribute.

+	 * @see #getUnitId()

+	 * @generated

+	 */

+	void setUnitId(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Label</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Label</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Label</em>' attribute.

+	 * @see #setLabel(String)

+	 * @see comrel.ComrelPackage#getAtomicUnit_Label()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getLabel();

+

+	/**

+	 * Sets the value of the '{@link comrel.AtomicUnit#getLabel <em>Label</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Label</em>' attribute.

+	 * @see #getLabel()

+	 * @generated

+	 */

+	void setLabel(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Namespace Uri</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #setNamespaceUri(String)

+	 * @see comrel.ComrelPackage#getAtomicUnit_NamespaceUri()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getNamespaceUri();

+

+	/**

+	 * Sets the value of the '{@link comrel.AtomicUnit#getNamespaceUri <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #getNamespaceUri()

+	 * @generated

+	 */

+	void setNamespaceUri(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Atomic Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getAtomicUnit_Type()

+	 * @model default="Atomic Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+	/**

+	 * Returns the value of the '<em><b>Model Refactoring</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Model Refactoring</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Model Refactoring</em>' reference.

+	 * @see #setModelRefactoring(ModelRefactoring)

+	 * @see comrel.ComrelPackage#getAtomicUnit_ModelRefactoring()

+	 * @model required="true"

+	 * @generated

+	 */

+	ModelRefactoring getModelRefactoring();

+

+	/**

+	 * Sets the value of the '{@link comrel.AtomicUnit#getModelRefactoring <em>Model Refactoring</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Model Refactoring</em>' reference.

+	 * @see #getModelRefactoring()

+	 * @generated

+	 */

+	void setModelRefactoring(ModelRefactoring value);

+

+	/**

+	 * Returns the value of the '<em><b>Check Initial Condition Flag</b></em>' attribute.

+	 * The default value is <code>"false"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Check Initial Condition Flag</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Check Initial Condition Flag</em>' attribute.

+	 * @see #setCheckInitialConditionFlag(boolean)

+	 * @see comrel.ComrelPackage#getAtomicUnit_CheckInitialConditionFlag()

+	 * @model default="false"

+	 * @generated

+	 */

+	boolean isCheckInitialConditionFlag();

+

+	/**

+	 * Sets the value of the '{@link comrel.AtomicUnit#isCheckInitialConditionFlag <em>Check Initial Condition Flag</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Check Initial Condition Flag</em>' attribute.

+	 * @see #isCheckInitialConditionFlag()

+	 * @generated

+	 */

+	void setCheckInitialConditionFlag(boolean value);

+

+	/**

+	 * Returns the value of the '<em><b>Check Final Condition Flag</b></em>' attribute.

+	 * The default value is <code>"false"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Check Final Condition Flag</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Check Final Condition Flag</em>' attribute.

+	 * @see #setCheckFinalConditionFlag(boolean)

+	 * @see comrel.ComrelPackage#getAtomicUnit_CheckFinalConditionFlag()

+	 * @model default="false"

+	 * @generated

+	 */

+	boolean isCheckFinalConditionFlag();

+

+	/**

+	 * Sets the value of the '{@link comrel.AtomicUnit#isCheckFinalConditionFlag <em>Check Final Condition Flag</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Check Final Condition Flag</em>' attribute.

+	 * @see #isCheckFinalConditionFlag()

+	 * @generated

+	 */

+	void setCheckFinalConditionFlag(boolean value);

+

+} // AtomicUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/CartesianQueuedUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/CartesianQueuedUnit.java
new file mode 100644
index 0000000..87fe9ef
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/CartesianQueuedUnit.java
@@ -0,0 +1,154 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Cartesian Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.CartesianQueuedUnit#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.CartesianQueuedUnit#getRefactoringUnit <em>Refactoring Unit</em>}</li>

+ *   <li>{@link comrel.CartesianQueuedUnit#getSingleInputPorts <em>Single Input Ports</em>}</li>

+ *   <li>{@link comrel.CartesianQueuedUnit#getMultiInputPorts <em>Multi Input Ports</em>}</li>

+ *   <li>{@link comrel.CartesianQueuedUnit#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.CartesianQueuedUnit#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getCartesianQueuedUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type,lblStrict' label.pattern='{0}:{1} -{2}-'"

+ * @generated

+ */

+public interface CartesianQueuedUnit extends TwicedQueuedUnit {

+	/**

+	 * Returns the value of the '<em><b>Helper Units</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.HelperUnit}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Units</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>Helper Units</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getCartesianQueuedUnit_HelperUnits()

+	 * @model containment="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	EList<HelperUnit> getHelperUnits();

+

+	/**

+	 * Returns the value of the '<em><b>Refactoring Unit</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Refactoring Unit</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Refactoring Unit</em>' containment reference.

+	 * @see #setRefactoringUnit(RefactoringUnit)

+	 * @see comrel.ComrelPackage#getCartesianQueuedUnit_RefactoringUnit()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	RefactoringUnit getRefactoringUnit();

+

+	/**

+	 * Sets the value of the '{@link comrel.CartesianQueuedUnit#getRefactoringUnit <em>Refactoring Unit</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Refactoring Unit</em>' containment reference.

+	 * @see #getRefactoringUnit()

+	 * @generated

+	 */

+	void setRefactoringUnit(RefactoringUnit value);

+

+	/**

+	 * Returns the value of the '<em><b>Single Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.SingleInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Single Input Ports</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>Single Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getCartesianQueuedUnit_SingleInputPorts()

+	 * @model containment="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<SingleInputPort> getSingleInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Multi Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.MultiInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Multi Input Ports</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>Multi Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getCartesianQueuedUnit_MultiInputPorts()

+	 * @model containment="true" lower="2" upper="2"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<MultiInputPort> getMultiInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Cartesian Queued Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getCartesianQueuedUnit_Type()

+	 * @model default="Cartesian Queued Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+	/**

+	 * Returns the value of the '<em><b>Lbl Strict</b></em>' attribute.

+	 * The default value is <code>"strict"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Lbl Strict</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #setLblStrict(String)

+	 * @see comrel.ComrelPackage#getCartesianQueuedUnit_LblStrict()

+	 * @model default="strict"

+	 * @generated

+	 */

+	String getLblStrict();

+

+	/**

+	 * Sets the value of the '{@link comrel.CartesianQueuedUnit#getLblStrict <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #getLblStrict()

+	 * @generated

+	 */

+	void setLblStrict(String value);

+

+} // CartesianQueuedUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/CompositeRefactoring.java b/org.eclipse.emf.refactor.comrel/src/comrel/CompositeRefactoring.java
new file mode 100644
index 0000000..30a49fa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/CompositeRefactoring.java
@@ -0,0 +1,227 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import java.util.Collection;

+import java.util.Set;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Composite Refactoring</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.CompositeRefactoring#getMainRefactoringUnit <em>Main Refactoring Unit</em>}</li>

+ *   <li>{@link comrel.CompositeRefactoring#getPortMappings <em>Port Mappings</em>}</li>

+ *   <li>{@link comrel.CompositeRefactoring#getModelRefactorings <em>Model Refactorings</em>}</li>

+ *   <li>{@link comrel.CompositeRefactoring#getHelper <em>Helper</em>}</li>

+ *   <li>{@link comrel.CompositeRefactoring#getMappingVisualization <em>Mapping Visualization</em>}</li>

+ *   <li>{@link comrel.CompositeRefactoring#getCustomInitialCondition <em>Custom Initial Condition</em>}</li>

+ *   <li>{@link comrel.CompositeRefactoring#getCustomFinalCondition <em>Custom Final Condition</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getCompositeRefactoring()

+ * @model annotation="gmf.diagram foo='bar' onefile='false'"

+ * @generated

+ */

+public interface CompositeRefactoring extends ModelRefactoring {

+	/**

+	 * Returns the value of the '<em><b>Main Refactoring Unit</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Main Refactoring Unit</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Main Refactoring Unit</em>' containment reference.

+	 * @see #setMainRefactoringUnit(RefactoringUnit)

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_MainRefactoringUnit()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	RefactoringUnit getMainRefactoringUnit();

+

+	/**

+	 * Sets the value of the '{@link comrel.CompositeRefactoring#getMainRefactoringUnit <em>Main Refactoring Unit</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Main Refactoring Unit</em>' containment reference.

+	 * @see #getMainRefactoringUnit()

+	 * @generated

+	 */

+	void setMainRefactoringUnit(RefactoringUnit value);

+

+	/**

+	 * Returns the value of the '<em><b>Port Mappings</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.PortMapping}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Port Mappings</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>Port Mappings</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_PortMappings()

+	 * @model containment="true"

+	 * @generated

+	 */

+	EList<PortMapping> getPortMappings();

+

+	/**

+	 * Returns the value of the '<em><b>Model Refactorings</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.ModelRefactoring}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Model Refactorings</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>Model Refactorings</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_ModelRefactorings()

+	 * @model containment="true"

+	 * @generated

+	 */

+	EList<ModelRefactoring> getModelRefactorings();

+

+	/**

+	 * Returns the value of the '<em><b>Helper</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.Helper}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper</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>Helper</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_Helper()

+	 * @model containment="true"

+	 * @generated

+	 */

+	EList<Helper> getHelper();

+

+	/**

+	 * Returns the value of the '<em><b>Mapping Visualization</b></em>' attribute.

+	 * The default value is <code>"0"</code>.

+	 * The literals are from the enumeration {@link comrel.MappingVisualization}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Mapping Visualization</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Mapping Visualization</em>' attribute.

+	 * @see comrel.MappingVisualization

+	 * @see #setMappingVisualization(MappingVisualization)

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_MappingVisualization()

+	 * @model default="0" required="true"

+	 * @generated

+	 */

+	MappingVisualization getMappingVisualization();

+

+	/**

+	 * Sets the value of the '{@link comrel.CompositeRefactoring#getMappingVisualization <em>Mapping Visualization</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Mapping Visualization</em>' attribute.

+	 * @see comrel.MappingVisualization

+	 * @see #getMappingVisualization()

+	 * @generated

+	 */

+	void setMappingVisualization(MappingVisualization value);

+

+	/**

+	 * Returns the value of the '<em><b>Custom Initial Condition</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Custom Initial Condition</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Custom Initial Condition</em>' attribute.

+	 * @see #setCustomInitialCondition(String)

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_CustomInitialCondition()

+	 * @model

+	 * @generated

+	 */

+	String getCustomInitialCondition();

+

+	/**

+	 * Sets the value of the '{@link comrel.CompositeRefactoring#getCustomInitialCondition <em>Custom Initial Condition</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Custom Initial Condition</em>' attribute.

+	 * @see #getCustomInitialCondition()

+	 * @generated

+	 */

+	void setCustomInitialCondition(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Custom Final Condition</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Custom Final Condition</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Custom Final Condition</em>' attribute.

+	 * @see #setCustomFinalCondition(String)

+	 * @see comrel.ComrelPackage#getCompositeRefactoring_CustomFinalCondition()

+	 * @model

+	 * @generated

+	 */

+	String getCustomFinalCondition();

+

+	/**

+	 * Sets the value of the '{@link comrel.CompositeRefactoring#getCustomFinalCondition <em>Custom Final Condition</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Custom Final Condition</em>' attribute.

+	 * @see #getCustomFinalCondition()

+	 * @generated

+	 */

+	void setCustomFinalCondition(String value);

+	

+	public ModelRefactoring getModelRefactoring(String id);

+	

+	public Helper getHelper(String id);

+

+	public SingleFeatureHelper getSingleFeatureHelper(String id);

+	

+	public MultiFeatureHelper getMultiFeatureHelper(String id);

+	

+	public Collection<ModelRefactoring> getEmfRefactoringsAsModelRefactorings();

+	

+	public ModelRefactoring getEmfRefactoringAsModelRefactoring(String id);	

+	

+	public MultiFilterHelper getMultiFilterHelper(String id);

+

+	public SingleFilterHelper getSingleFilterHelper(String id);

+

+	public boolean modelRefactoringInUse(ModelRefactoring ref, AtomicUnit context);

+

+	public boolean helperInUse(Helper helper, HelperUnit context);

+

+	public void removeUnusedModelRefactorings();

+

+	public void removeUnusedHelper();

+

+	public void setName(String newName, boolean updateRootUnit);

+

+	public void setMappingNumbers(Set<Integer> mappingNumbers);

+

+	public Set<Integer> getMappingNumbers();

+

+	public void cleanUpMappingNumbers();

+

+	public void updateVisualization();

+

+} // CompositeRefactoring

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/CompositeUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/CompositeUnit.java
new file mode 100644
index 0000000..18444b6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/CompositeUnit.java
@@ -0,0 +1,26 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Composite Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getCompositeUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface CompositeUnit extends RefactoringUnit {

+	

+	EList<HelperUnit> getHelperUnits();

+	

+} // CompositeUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/ComrelFactory.java b/org.eclipse.emf.refactor.comrel/src/comrel/ComrelFactory.java
new file mode 100644
index 0000000..ca3e523
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/ComrelFactory.java
@@ -0,0 +1,303 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+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 comrel.ComrelPackage

+ * @generated

+ */

+public interface ComrelFactory extends EFactory {

+	/**

+	 * The singleton instance of the factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	ComrelFactory eINSTANCE = comrel.impl.ComrelFactoryImpl.init();

+

+	/**

+	 * Returns a new object of class '<em>Composite Refactoring</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Composite Refactoring</em>'.

+	 * @generated

+	 */

+	CompositeRefactoring createCompositeRefactoring();

+

+	/**

+	 * Returns a new object of class '<em>Model Refactoring</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Model Refactoring</em>'.

+	 * @generated

+	 */

+	ModelRefactoring createModelRefactoring();

+	

+	/**

+	 * Returns a new object of class '<em>Model Refactoring</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Model Refactoring</em>'.

+	 */

+	ModelRefactoring createModelRefactoring(String id);

+

+	/**

+	 * Returns a new object of class '<em>Atomic Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Atomic Unit</em>'.

+	 * @generated

+	 */

+	AtomicUnit createAtomicUnit();

+	

+	/**

+	 * Returns a new object of class '<em>Atomic Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Atomic Unit</em>'.

+	 */

+	AtomicUnit createAtomicUnit(ModelRefactoring refactoring);

+

+	/**

+	 * Returns a new object of class '<em>Sequential Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Sequential Unit</em>'.

+	 * @generated

+	 */

+	SequentialUnit createSequentialUnit();

+

+	/**

+	 * Returns a new object of class '<em>Condition Check</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Condition Check</em>'.

+	 * @generated

+	 */

+	ConditionCheck createConditionCheck();

+

+	/**

+	 * Returns a new object of class '<em>Conditional Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Conditional Unit</em>'.

+	 * @generated

+	 */

+	ConditionalUnit createConditionalUnit();

+

+	/**

+	 * Returns a new object of class '<em>Single Queued Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Queued Unit</em>'.

+	 * @generated

+	 */

+	SingleQueuedUnit createSingleQueuedUnit();

+

+	/**

+	 * Returns a new object of class '<em>Cartesian Queued Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Cartesian Queued Unit</em>'.

+	 * @generated

+	 */

+	CartesianQueuedUnit createCartesianQueuedUnit();

+

+	/**

+	 * Returns a new object of class '<em>Parallel Queued Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Parallel Queued Unit</em>'.

+	 * @generated

+	 */

+	ParallelQueuedUnit createParallelQueuedUnit();

+

+	/**

+	 * Returns a new object of class '<em>Single Feature Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Feature Unit</em>'.

+	 * @generated

+	 */

+	SingleFeatureUnit createSingleFeatureUnit();

+	

+	/**

+	 * Returns a new object of class '<em>Single Feature Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Feature Unit</em>'.

+	 */

+	SingleFeatureUnit createSingleFeatureUnit(SingleFeatureHelper helper);

+

+	/**

+	 * Returns a new object of class '<em>Multi Feature Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Feature Unit</em>'.

+	 * @generated

+	 */

+	MultiFeatureUnit createMultiFeatureUnit();

+	

+	/**

+	 * Returns a new object of class '<em>Multi Feature Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Feature Unit</em>'.

+	 */

+	MultiFeatureUnit createMultiFeatureUnit(MultiFeatureHelper helper);

+

+	/**

+	 * Returns a new object of class '<em>Single Filter Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Filter Unit</em>'.

+	 * @generated

+	 */

+	SingleFilterUnit createSingleFilterUnit();

+	

+	/**

+	 * Returns a new object of class '<em>Single Filter Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Filter Unit</em>'.

+	 * @generated

+	 */

+	SingleFilterUnit createSingleFilterUnit(SingleFilterHelper helper);

+

+	/**

+	 * Returns a new object of class '<em>Multi Filter Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Filter Unit</em>'.

+	 * @generated

+	 */

+	MultiFilterUnit createMultiFilterUnit();

+	

+	/**

+	 * Returns a new object of class '<em>Multi Filter Unit</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Filter Unit</em>'.

+	 * @generated

+	 */

+	MultiFilterUnit createMultiFilterUnit(MultiFilterHelper helper);

+

+	/**

+	 * Returns a new object of class '<em>Single Feature Helper</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Feature Helper</em>'.

+	 * @generated

+	 */

+	SingleFeatureHelper createSingleFeatureHelper();

+

+	/**

+	 * Returns a new object of class '<em>Multi Feature Helper</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Feature Helper</em>'.

+	 * @generated

+	 */

+	MultiFeatureHelper createMultiFeatureHelper();

+

+	/**

+	 * Returns a new object of class '<em>Single Filter Helper</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Filter Helper</em>'.

+	 * @generated

+	 */

+	SingleFilterHelper createSingleFilterHelper();

+

+	/**

+	 * Returns a new object of class '<em>Multi Filter Helper</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Filter Helper</em>'.

+	 * @generated

+	 */

+	MultiFilterHelper createMultiFilterHelper();

+

+	/**

+	 * Returns a new object of class '<em>Single Input Port</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Input Port</em>'.

+	 * @generated

+	 */

+	SingleInputPort createSingleInputPort();

+

+	/**

+	 * Returns a new object of class '<em>Multi Input Port</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Input Port</em>'.

+	 * @generated

+	 */

+	MultiInputPort createMultiInputPort();

+

+	/**

+	 * Returns a new object of class '<em>Single Output Port</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Output Port</em>'.

+	 * @generated

+	 */

+	SingleOutputPort createSingleOutputPort();

+

+	/**

+	 * Returns a new object of class '<em>Multi Output Port</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Output Port</em>'.

+	 * @generated

+	 */

+	MultiOutputPort createMultiOutputPort();

+

+	/**

+	 * Returns a new object of class '<em>Single Port Mapping</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Single Port Mapping</em>'.

+	 * @generated

+	 */

+	SinglePortMapping createSinglePortMapping();

+

+	/**

+	 * Returns a new object of class '<em>Multi Port Mapping</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Port Mapping</em>'.

+	 * @generated

+	 */

+	MultiPortMapping createMultiPortMapping();

+

+	/**

+	 * Returns a new object of class '<em>Multi Single Port Mapping</em>'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return a new object of class '<em>Multi Single Port Mapping</em>'.

+	 * @generated

+	 */

+	MultiSinglePortMapping createMultiSinglePortMapping();

+

+	/**

+	 * Returns the package supported by this factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the package supported by this factory.

+	 * @generated

+	 */

+	ComrelPackage getComrelPackage();

+

+} //ComrelFactory

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/ComrelPackage.java b/org.eclipse.emf.refactor.comrel/src/comrel/ComrelPackage.java
new file mode 100644
index 0000000..8078c21
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/ComrelPackage.java
@@ -0,0 +1,5450 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.ecore.EAttribute;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EEnum;

+import org.eclipse.emf.ecore.EPackage;

+import org.eclipse.emf.ecore.EReference;

+

+/**

+ * <!-- 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 enum,</li>

+ *   <li>and each data type</li>

+ * </ul>

+ * <!-- end-user-doc -->

+ * @see comrel.ComrelFactory

+ * @model kind="package"

+ *        annotation="gmf foo='bar'"

+ * @generated

+ */

+public interface ComrelPackage extends EPackage {

+	/**

+	 * The package name.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	String eNAME = "comrel";

+

+	/**

+	 * The package namespace URI.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	String eNS_URI = "http://comrel/0.1";

+

+	/**

+	 * The package namespace name.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	String eNS_PREFIX = "comrel";

+

+	/**

+	 * The singleton instance of the package.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	ComrelPackage eINSTANCE = comrel.impl.ComrelPackageImpl.init();

+

+	/**

+	 * The meta object id for the '{@link comrel.NamedElement <em>Named Element</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.NamedElement

+	 * @see comrel.impl.ComrelPackageImpl#getNamedElement()

+	 * @generated

+	 */

+	int NAMED_ELEMENT = 1;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int NAMED_ELEMENT__NAME = 0;

+

+	/**

+	 * The number of structural features of the '<em>Named Element</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int NAMED_ELEMENT_FEATURE_COUNT = 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.ModelRefactoringImpl <em>Model Refactoring</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.ModelRefactoringImpl

+	 * @see comrel.impl.ComrelPackageImpl#getModelRefactoring()

+	 * @generated

+	 */

+	int MODEL_REFACTORING = 4;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING__NAME = NAMED_ELEMENT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING__DESCRIPTION = NAMED_ELEMENT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Ref Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING__REF_ID = NAMED_ELEMENT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Label</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING__LABEL = NAMED_ELEMENT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING__NAMESPACE_URI = NAMED_ELEMENT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING__INPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 4;

+

+	/**

+	 * The number of structural features of the '<em>Model Refactoring</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MODEL_REFACTORING_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 5;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.CompositeRefactoringImpl <em>Composite Refactoring</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.CompositeRefactoringImpl

+	 * @see comrel.impl.ComrelPackageImpl#getCompositeRefactoring()

+	 * @generated

+	 */

+	int COMPOSITE_REFACTORING = 0;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__NAME = MODEL_REFACTORING__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__DESCRIPTION = MODEL_REFACTORING__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Ref Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__REF_ID = MODEL_REFACTORING__REF_ID;

+

+	/**

+	 * The feature id for the '<em><b>Label</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__LABEL = MODEL_REFACTORING__LABEL;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__NAMESPACE_URI = MODEL_REFACTORING__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__INPUT_PORTS = MODEL_REFACTORING__INPUT_PORTS;

+

+	/**

+	 * The feature id for the '<em><b>Main Refactoring Unit</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT = MODEL_REFACTORING_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Port Mappings</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__PORT_MAPPINGS = MODEL_REFACTORING_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Model Refactorings</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__MODEL_REFACTORINGS = MODEL_REFACTORING_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Helper</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__HELPER = MODEL_REFACTORING_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Mapping Visualization</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__MAPPING_VISUALIZATION = MODEL_REFACTORING_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Custom Initial Condition</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION = MODEL_REFACTORING_FEATURE_COUNT + 5;

+

+	/**

+	 * The feature id for the '<em><b>Custom Final Condition</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION = MODEL_REFACTORING_FEATURE_COUNT + 6;

+

+	/**

+	 * The number of structural features of the '<em>Composite Refactoring</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_REFACTORING_FEATURE_COUNT = MODEL_REFACTORING_FEATURE_COUNT + 7;

+

+	/**

+	 * The meta object id for the '{@link comrel.DescribedElement <em>Described Element</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.DescribedElement

+	 * @see comrel.impl.ComrelPackageImpl#getDescribedElement()

+	 * @generated

+	 */

+	int DESCRIBED_ELEMENT = 2;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int DESCRIBED_ELEMENT__DESCRIPTION = 0;

+

+	/**

+	 * The number of structural features of the '<em>Described Element</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int DESCRIBED_ELEMENT_FEATURE_COUNT = 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.RefactoringUnitImpl <em>Refactoring Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.RefactoringUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getRefactoringUnit()

+	 * @generated

+	 */

+	int REFACTORING_UNIT = 3;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int REFACTORING_UNIT__NAME = NAMED_ELEMENT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int REFACTORING_UNIT__SEQ_EXECUTION_ORDER = NAMED_ELEMENT_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Refactoring Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int REFACTORING_UNIT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.AtomicUnitImpl <em>Atomic Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.AtomicUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getAtomicUnit()

+	 * @generated

+	 */

+	int ATOMIC_UNIT = 5;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__NAME = REFACTORING_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__SEQ_EXECUTION_ORDER = REFACTORING_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__INPUT_PORTS = REFACTORING_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__UNIT_ID = REFACTORING_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Label</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__LABEL = REFACTORING_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__NAMESPACE_URI = REFACTORING_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__TYPE = REFACTORING_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Model Refactoring</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__MODEL_REFACTORING = REFACTORING_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The feature id for the '<em><b>Check Initial Condition Flag</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG = REFACTORING_UNIT_FEATURE_COUNT + 6;

+

+	/**

+	 * The feature id for the '<em><b>Check Final Condition Flag</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG = REFACTORING_UNIT_FEATURE_COUNT + 7;

+

+	/**

+	 * The number of structural features of the '<em>Atomic Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int ATOMIC_UNIT_FEATURE_COUNT = REFACTORING_UNIT_FEATURE_COUNT + 8;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.CompositeUnitImpl <em>Composite Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.CompositeUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getCompositeUnit()

+	 * @generated

+	 */

+	int COMPOSITE_UNIT = 6;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_UNIT__NAME = REFACTORING_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_UNIT__SEQ_EXECUTION_ORDER = REFACTORING_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The number of structural features of the '<em>Composite Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int COMPOSITE_UNIT_FEATURE_COUNT = REFACTORING_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SequentialUnitImpl <em>Sequential Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SequentialUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSequentialUnit()

+	 * @generated

+	 */

+	int SEQUENTIAL_UNIT = 7;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__NAME = COMPOSITE_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__SEQ_EXECUTION_ORDER = COMPOSITE_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Helper Units</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__HELPER_UNITS = COMPOSITE_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Refactoring Units</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__REFACTORING_UNITS = COMPOSITE_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__INPUT_PORTS = COMPOSITE_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__STRICT = COMPOSITE_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__TYPE = COMPOSITE_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Lbl Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT__LBL_STRICT = COMPOSITE_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The number of structural features of the '<em>Sequential Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SEQUENTIAL_UNIT_FEATURE_COUNT = COMPOSITE_UNIT_FEATURE_COUNT + 6;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.ConditionCheckImpl <em>Condition Check</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.ConditionCheckImpl

+	 * @see comrel.impl.ComrelPackageImpl#getConditionCheck()

+	 * @generated

+	 */

+	int CONDITION_CHECK = 8;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITION_CHECK__NAME = NAMED_ELEMENT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITION_CHECK__DESCRIPTION = NAMED_ELEMENT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITION_CHECK__TYPE = NAMED_ELEMENT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Spec</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITION_CHECK__SPEC = NAMED_ELEMENT_FEATURE_COUNT + 2;

+

+	/**

+	 * The number of structural features of the '<em>Condition Check</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITION_CHECK_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.ConditionalUnitImpl <em>Conditional Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.ConditionalUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getConditionalUnit()

+	 * @generated

+	 */

+	int CONDITIONAL_UNIT = 9;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__NAME = COMPOSITE_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__SEQ_EXECUTION_ORDER = COMPOSITE_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>If</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__IF = COMPOSITE_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Helper Units</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__HELPER_UNITS = COMPOSITE_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Then</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__THEN = COMPOSITE_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Else</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__ELSE = COMPOSITE_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__INPUT_PORTS = COMPOSITE_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT__TYPE = COMPOSITE_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The number of structural features of the '<em>Conditional Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CONDITIONAL_UNIT_FEATURE_COUNT = COMPOSITE_UNIT_FEATURE_COUNT + 6;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.QueuedUnitImpl <em>Queued Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.QueuedUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getQueuedUnit()

+	 * @generated

+	 */

+	int QUEUED_UNIT = 10;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int QUEUED_UNIT__NAME = COMPOSITE_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int QUEUED_UNIT__SEQ_EXECUTION_ORDER = COMPOSITE_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int QUEUED_UNIT__STRICT = COMPOSITE_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Queued Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int QUEUED_UNIT_FEATURE_COUNT = COMPOSITE_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleQueuedUnitImpl <em>Single Queued Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleQueuedUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleQueuedUnit()

+	 * @generated

+	 */

+	int SINGLE_QUEUED_UNIT = 11;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__NAME = QUEUED_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__SEQ_EXECUTION_ORDER = QUEUED_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__STRICT = QUEUED_UNIT__STRICT;

+

+	/**

+	 * The feature id for the '<em><b>Helper Units</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__HELPER_UNITS = QUEUED_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Refactoring Unit</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__REFACTORING_UNIT = QUEUED_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Single Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS = QUEUED_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Multi Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT = QUEUED_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__TYPE = QUEUED_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Lbl Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT__LBL_STRICT = QUEUED_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The number of structural features of the '<em>Single Queued Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_QUEUED_UNIT_FEATURE_COUNT = QUEUED_UNIT_FEATURE_COUNT + 6;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.TwicedQueuedUnitImpl <em>Twiced Queued Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.TwicedQueuedUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getTwicedQueuedUnit()

+	 * @generated

+	 */

+	int TWICED_QUEUED_UNIT = 12;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int TWICED_QUEUED_UNIT__NAME = QUEUED_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int TWICED_QUEUED_UNIT__SEQ_EXECUTION_ORDER = QUEUED_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int TWICED_QUEUED_UNIT__STRICT = QUEUED_UNIT__STRICT;

+

+	/**

+	 * The number of structural features of the '<em>Twiced Queued Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int TWICED_QUEUED_UNIT_FEATURE_COUNT = QUEUED_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.CartesianQueuedUnitImpl <em>Cartesian Queued Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.CartesianQueuedUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getCartesianQueuedUnit()

+	 * @generated

+	 */

+	int CARTESIAN_QUEUED_UNIT = 13;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__NAME = TWICED_QUEUED_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__SEQ_EXECUTION_ORDER = TWICED_QUEUED_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__STRICT = TWICED_QUEUED_UNIT__STRICT;

+

+	/**

+	 * The feature id for the '<em><b>Helper Units</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__HELPER_UNITS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Refactoring Unit</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT = TWICED_QUEUED_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Single Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Multi Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__TYPE = TWICED_QUEUED_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Lbl Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT__LBL_STRICT = TWICED_QUEUED_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The number of structural features of the '<em>Cartesian Queued Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int CARTESIAN_QUEUED_UNIT_FEATURE_COUNT = TWICED_QUEUED_UNIT_FEATURE_COUNT + 6;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.ParallelQueuedUnitImpl <em>Parallel Queued Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.ParallelQueuedUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getParallelQueuedUnit()

+	 * @generated

+	 */

+	int PARALLEL_QUEUED_UNIT = 14;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__NAME = TWICED_QUEUED_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__SEQ_EXECUTION_ORDER = TWICED_QUEUED_UNIT__SEQ_EXECUTION_ORDER;

+

+	/**

+	 * The feature id for the '<em><b>Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__STRICT = TWICED_QUEUED_UNIT__STRICT;

+

+	/**

+	 * The feature id for the '<em><b>Helper Units</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__HELPER_UNITS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Refactoring Units</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__REFACTORING_UNITS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Single Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Multi Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS = TWICED_QUEUED_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__TYPE = TWICED_QUEUED_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The feature id for the '<em><b>Lbl Strict</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT__LBL_STRICT = TWICED_QUEUED_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The number of structural features of the '<em>Parallel Queued Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PARALLEL_QUEUED_UNIT_FEATURE_COUNT = TWICED_QUEUED_UNIT_FEATURE_COUNT + 6;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.HelperUnitImpl <em>Helper Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.HelperUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getHelperUnit()

+	 * @generated

+	 */

+	int HELPER_UNIT = 15;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER_UNIT__NAME = NAMED_ELEMENT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER_UNIT__DESCRIPTION = NAMED_ELEMENT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER_UNIT__HELPER_UNIT_ID = NAMED_ELEMENT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER_UNIT__NAMESPACE_URI = NAMED_ELEMENT_FEATURE_COUNT + 2;

+

+	/**

+	 * The number of structural features of the '<em>Helper Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER_UNIT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.FeatureUnitImpl <em>Feature Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.FeatureUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getFeatureUnit()

+	 * @generated

+	 */

+	int FEATURE_UNIT = 16;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_UNIT__NAME = HELPER_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_UNIT__DESCRIPTION = HELPER_UNIT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_UNIT__HELPER_UNIT_ID = HELPER_UNIT__HELPER_UNIT_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_UNIT__NAMESPACE_URI = HELPER_UNIT__NAMESPACE_URI;

+

+	/**

+	 * The number of structural features of the '<em>Feature Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_UNIT_FEATURE_COUNT = HELPER_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleFeatureUnitImpl <em>Single Feature Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleFeatureUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleFeatureUnit()

+	 * @generated

+	 */

+	int SINGLE_FEATURE_UNIT = 17;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__NAME = FEATURE_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__DESCRIPTION = FEATURE_UNIT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__HELPER_UNIT_ID = FEATURE_UNIT__HELPER_UNIT_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__NAMESPACE_URI = FEATURE_UNIT__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__INPUT_PORT = FEATURE_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS = FEATURE_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__OUTPUT_PORT = FEATURE_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Single Feature Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER = FEATURE_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT__TYPE = FEATURE_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The number of structural features of the '<em>Single Feature Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_UNIT_FEATURE_COUNT = FEATURE_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiFeatureUnitImpl <em>Multi Feature Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiFeatureUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiFeatureUnit()

+	 * @generated

+	 */

+	int MULTI_FEATURE_UNIT = 18;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__NAME = FEATURE_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__DESCRIPTION = FEATURE_UNIT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__HELPER_UNIT_ID = FEATURE_UNIT__HELPER_UNIT_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__NAMESPACE_URI = FEATURE_UNIT__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__INPUT_PORT = FEATURE_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS = FEATURE_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__OUTPUT_PORT = FEATURE_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Multi Feature Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER = FEATURE_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT__TYPE = FEATURE_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The number of structural features of the '<em>Multi Feature Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_UNIT_FEATURE_COUNT = FEATURE_UNIT_FEATURE_COUNT + 5;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.FilterUnitImpl <em>Filter Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.FilterUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getFilterUnit()

+	 * @generated

+	 */

+	int FILTER_UNIT = 19;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_UNIT__NAME = HELPER_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_UNIT__DESCRIPTION = HELPER_UNIT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_UNIT__HELPER_UNIT_ID = HELPER_UNIT__HELPER_UNIT_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_UNIT__NAMESPACE_URI = HELPER_UNIT__NAMESPACE_URI;

+

+	/**

+	 * The number of structural features of the '<em>Filter Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_UNIT_FEATURE_COUNT = HELPER_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleFilterUnitImpl <em>Single Filter Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleFilterUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleFilterUnit()

+	 * @generated

+	 */

+	int SINGLE_FILTER_UNIT = 20;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__NAME = FILTER_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__DESCRIPTION = FILTER_UNIT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__HELPER_UNIT_ID = FILTER_UNIT__HELPER_UNIT_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__NAMESPACE_URI = FILTER_UNIT__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__INPUT_PORT = FILTER_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__OUTPUT_PORT = FILTER_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Single Filter Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER = FILTER_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT__TYPE = FILTER_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The number of structural features of the '<em>Single Filter Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_UNIT_FEATURE_COUNT = FILTER_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiFilterUnitImpl <em>Multi Filter Unit</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiFilterUnitImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiFilterUnit()

+	 * @generated

+	 */

+	int MULTI_FILTER_UNIT = 21;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__NAME = FILTER_UNIT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__DESCRIPTION = FILTER_UNIT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__HELPER_UNIT_ID = FILTER_UNIT__HELPER_UNIT_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__NAMESPACE_URI = FILTER_UNIT__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__INPUT_PORT = FILTER_UNIT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__OUTPUT_PORT = FILTER_UNIT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Multi Filter Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__MULTI_FILTER_HELPER = FILTER_UNIT_FEATURE_COUNT + 2;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT__TYPE = FILTER_UNIT_FEATURE_COUNT + 3;

+

+	/**

+	 * The number of structural features of the '<em>Multi Filter Unit</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_UNIT_FEATURE_COUNT = FILTER_UNIT_FEATURE_COUNT + 4;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.HelperImpl <em>Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.HelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getHelper()

+	 * @generated

+	 */

+	int HELPER = 22;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER__NAME = NAMED_ELEMENT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER__DESCRIPTION = NAMED_ELEMENT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER__HELPER_ID = NAMED_ELEMENT_FEATURE_COUNT + 1;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER__NAMESPACE_URI = NAMED_ELEMENT_FEATURE_COUNT + 2;

+

+	/**

+	 * The number of structural features of the '<em>Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int HELPER_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.FeatureHelperImpl <em>Feature Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.FeatureHelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getFeatureHelper()

+	 * @generated

+	 */

+	int FEATURE_HELPER = 23;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER__NAME = HELPER__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER__DESCRIPTION = HELPER__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER__HELPER_ID = HELPER__HELPER_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER__NAMESPACE_URI = HELPER__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER__INPUT_PORT = HELPER_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER__SECONDARY_INPUT_PORTS = HELPER_FEATURE_COUNT + 1;

+

+	/**

+	 * The number of structural features of the '<em>Feature Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FEATURE_HELPER_FEATURE_COUNT = HELPER_FEATURE_COUNT + 2;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleFeatureHelperImpl <em>Single Feature Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleFeatureHelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleFeatureHelper()

+	 * @generated

+	 */

+	int SINGLE_FEATURE_HELPER = 24;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__NAME = FEATURE_HELPER__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__DESCRIPTION = FEATURE_HELPER__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__HELPER_ID = FEATURE_HELPER__HELPER_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__NAMESPACE_URI = FEATURE_HELPER__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__INPUT_PORT = FEATURE_HELPER__INPUT_PORT;

+

+	/**

+	 * The feature id for the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__SECONDARY_INPUT_PORTS = FEATURE_HELPER__SECONDARY_INPUT_PORTS;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER__OUTPUT_PORT = FEATURE_HELPER_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Single Feature Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FEATURE_HELPER_FEATURE_COUNT = FEATURE_HELPER_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiFeatureHelperImpl <em>Multi Feature Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiFeatureHelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiFeatureHelper()

+	 * @generated

+	 */

+	int MULTI_FEATURE_HELPER = 25;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__NAME = FEATURE_HELPER__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__DESCRIPTION = FEATURE_HELPER__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__HELPER_ID = FEATURE_HELPER__HELPER_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__NAMESPACE_URI = FEATURE_HELPER__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__INPUT_PORT = FEATURE_HELPER__INPUT_PORT;

+

+	/**

+	 * The feature id for the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__SECONDARY_INPUT_PORTS = FEATURE_HELPER__SECONDARY_INPUT_PORTS;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER__OUTPUT_PORT = FEATURE_HELPER_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Multi Feature Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FEATURE_HELPER_FEATURE_COUNT = FEATURE_HELPER_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.FilterHelperImpl <em>Filter Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.FilterHelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getFilterHelper()

+	 * @generated

+	 */

+	int FILTER_HELPER = 26;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_HELPER__NAME = HELPER__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_HELPER__DESCRIPTION = HELPER__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_HELPER__HELPER_ID = HELPER__HELPER_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_HELPER__NAMESPACE_URI = HELPER__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_HELPER__INPUT_PORT = HELPER_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Filter Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int FILTER_HELPER_FEATURE_COUNT = HELPER_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleFilterHelperImpl <em>Single Filter Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleFilterHelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleFilterHelper()

+	 * @generated

+	 */

+	int SINGLE_FILTER_HELPER = 27;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER__NAME = FILTER_HELPER__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER__DESCRIPTION = FILTER_HELPER__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER__HELPER_ID = FILTER_HELPER__HELPER_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER__NAMESPACE_URI = FILTER_HELPER__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER__INPUT_PORT = FILTER_HELPER__INPUT_PORT;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER__OUTPUT_PORT = FILTER_HELPER_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Single Filter Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_FILTER_HELPER_FEATURE_COUNT = FILTER_HELPER_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiFilterHelperImpl <em>Multi Filter Helper</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiFilterHelperImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiFilterHelper()

+	 * @generated

+	 */

+	int MULTI_FILTER_HELPER = 28;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER__NAME = FILTER_HELPER__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER__DESCRIPTION = FILTER_HELPER__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER__HELPER_ID = FILTER_HELPER__HELPER_ID;

+

+	/**

+	 * The feature id for the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER__NAMESPACE_URI = FILTER_HELPER__NAMESPACE_URI;

+

+	/**

+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER__INPUT_PORT = FILTER_HELPER__INPUT_PORT;

+

+	/**

+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER__OUTPUT_PORT = FILTER_HELPER_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Multi Filter Helper</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_FILTER_HELPER_FEATURE_COUNT = FILTER_HELPER_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.PortImpl <em>Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.PortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getPort()

+	 * @generated

+	 */

+	int PORT = 29;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PORT__NAME = NAMED_ELEMENT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PORT__DESCRIPTION = NAMED_ELEMENT_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PORT__TYPE = NAMED_ELEMENT_FEATURE_COUNT + 1;

+

+	/**

+	 * The number of structural features of the '<em>Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SinglePortImpl <em>Single Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SinglePortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSinglePort()

+	 * @generated

+	 */

+	int SINGLE_PORT = 30;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT__NAME = PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT__DESCRIPTION = PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT__TYPE = PORT__TYPE;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT__VALUE = PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Single Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT_FEATURE_COUNT = PORT_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiPortImpl <em>Multi Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiPort()

+	 * @generated

+	 */

+	int MULTI_PORT = 31;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT__NAME = PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT__DESCRIPTION = PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT__TYPE = PORT__TYPE;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT__VALUE = PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The number of structural features of the '<em>Multi Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT_FEATURE_COUNT = PORT_FEATURE_COUNT + 1;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.InputPortImpl <em>Input Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.InputPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getInputPort()

+	 * @generated

+	 */

+	int INPUT_PORT = 32;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int INPUT_PORT__NAME = PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int INPUT_PORT__DESCRIPTION = PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int INPUT_PORT__TYPE = PORT__TYPE;

+

+	/**

+	 * The number of structural features of the '<em>Input Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int INPUT_PORT_FEATURE_COUNT = PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.OutputPortImpl <em>Output Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.OutputPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getOutputPort()

+	 * @generated

+	 */

+	int OUTPUT_PORT = 33;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int OUTPUT_PORT__NAME = PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int OUTPUT_PORT__DESCRIPTION = PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int OUTPUT_PORT__TYPE = PORT__TYPE;

+

+	/**

+	 * The number of structural features of the '<em>Output Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int OUTPUT_PORT_FEATURE_COUNT = PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleInputPortImpl <em>Single Input Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleInputPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleInputPort()

+	 * @generated

+	 */

+	int SINGLE_INPUT_PORT = 34;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_INPUT_PORT__NAME = SINGLE_PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_INPUT_PORT__DESCRIPTION = SINGLE_PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_INPUT_PORT__TYPE = SINGLE_PORT__TYPE;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_INPUT_PORT__VALUE = SINGLE_PORT__VALUE;

+

+	/**

+	 * The number of structural features of the '<em>Single Input Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_INPUT_PORT_FEATURE_COUNT = SINGLE_PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiInputPortImpl <em>Multi Input Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiInputPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiInputPort()

+	 * @generated

+	 */

+	int MULTI_INPUT_PORT = 35;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_INPUT_PORT__NAME = MULTI_PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_INPUT_PORT__DESCRIPTION = MULTI_PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_INPUT_PORT__TYPE = MULTI_PORT__TYPE;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_INPUT_PORT__VALUE = MULTI_PORT__VALUE;

+

+	/**

+	 * The number of structural features of the '<em>Multi Input Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_INPUT_PORT_FEATURE_COUNT = MULTI_PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SingleOutputPortImpl <em>Single Output Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SingleOutputPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSingleOutputPort()

+	 * @generated

+	 */

+	int SINGLE_OUTPUT_PORT = 36;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_OUTPUT_PORT__NAME = SINGLE_PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_OUTPUT_PORT__DESCRIPTION = SINGLE_PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_OUTPUT_PORT__TYPE = SINGLE_PORT__TYPE;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_OUTPUT_PORT__VALUE = SINGLE_PORT__VALUE;

+

+	/**

+	 * The number of structural features of the '<em>Single Output Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_OUTPUT_PORT_FEATURE_COUNT = SINGLE_PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiOutputPortImpl <em>Multi Output Port</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiOutputPortImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiOutputPort()

+	 * @generated

+	 */

+	int MULTI_OUTPUT_PORT = 37;

+

+	/**

+	 * The feature id for the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_OUTPUT_PORT__NAME = MULTI_PORT__NAME;

+

+	/**

+	 * The feature id for the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_OUTPUT_PORT__DESCRIPTION = MULTI_PORT__DESCRIPTION;

+

+	/**

+	 * The feature id for the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_OUTPUT_PORT__TYPE = MULTI_PORT__TYPE;

+

+	/**

+	 * The feature id for the '<em><b>Value</b></em>' attribute list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_OUTPUT_PORT__VALUE = MULTI_PORT__VALUE;

+

+	/**

+	 * The number of structural features of the '<em>Multi Output Port</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_OUTPUT_PORT_FEATURE_COUNT = MULTI_PORT_FEATURE_COUNT + 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.PortMappingImpl <em>Port Mapping</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.PortMappingImpl

+	 * @see comrel.impl.ComrelPackageImpl#getPortMapping()

+	 * @generated

+	 */

+	int PORT_MAPPING = 38;

+

+	/**

+	 * The number of structural features of the '<em>Port Mapping</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int PORT_MAPPING_FEATURE_COUNT = 0;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.SinglePortMappingImpl <em>Single Port Mapping</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.SinglePortMappingImpl

+	 * @see comrel.impl.ComrelPackageImpl#getSinglePortMapping()

+	 * @generated

+	 */

+	int SINGLE_PORT_MAPPING = 39;

+

+	/**

+	 * The feature id for the '<em><b>Source</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT_MAPPING__SOURCE = PORT_MAPPING_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Target</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT_MAPPING__TARGET = PORT_MAPPING_FEATURE_COUNT + 1;

+

+	/**

+	 * The number of structural features of the '<em>Single Port Mapping</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int SINGLE_PORT_MAPPING_FEATURE_COUNT = PORT_MAPPING_FEATURE_COUNT + 2;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiPortMappingImpl <em>Multi Port Mapping</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiPortMappingImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiPortMapping()

+	 * @generated

+	 */

+	int MULTI_PORT_MAPPING = 40;

+

+	/**

+	 * The feature id for the '<em><b>Source</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT_MAPPING__SOURCE = PORT_MAPPING_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Target</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT_MAPPING__TARGET = PORT_MAPPING_FEATURE_COUNT + 1;

+

+	/**

+	 * The number of structural features of the '<em>Multi Port Mapping</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_PORT_MAPPING_FEATURE_COUNT = PORT_MAPPING_FEATURE_COUNT + 2;

+

+	/**

+	 * The meta object id for the '{@link comrel.impl.MultiSinglePortMappingImpl <em>Multi Single Port Mapping</em>}' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.impl.MultiSinglePortMappingImpl

+	 * @see comrel.impl.ComrelPackageImpl#getMultiSinglePortMapping()

+	 * @generated

+	 */

+	int MULTI_SINGLE_PORT_MAPPING = 41;

+

+	/**

+	 * The feature id for the '<em><b>Source</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_SINGLE_PORT_MAPPING__SOURCE = PORT_MAPPING_FEATURE_COUNT + 0;

+

+	/**

+	 * The feature id for the '<em><b>Target</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_SINGLE_PORT_MAPPING__TARGET = PORT_MAPPING_FEATURE_COUNT + 1;

+

+	/**

+	 * The number of structural features of the '<em>Multi Single Port Mapping</em>' class.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 * @ordered

+	 */

+	int MULTI_SINGLE_PORT_MAPPING_FEATURE_COUNT = PORT_MAPPING_FEATURE_COUNT + 2;

+

+	/**

+	 * The meta object id for the '{@link comrel.MappingVisualization <em>Mapping Visualization</em>}' enum.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see comrel.MappingVisualization

+	 * @see comrel.impl.ComrelPackageImpl#getMappingVisualization()

+	 * @generated

+	 */

+	int MAPPING_VISUALIZATION = 42;

+

+

+	/**

+	 * Returns the meta object for class '{@link comrel.CompositeRefactoring <em>Composite Refactoring</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Composite Refactoring</em>'.

+	 * @see comrel.CompositeRefactoring

+	 * @generated

+	 */

+	EClass getCompositeRefactoring();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.CompositeRefactoring#getMainRefactoringUnit <em>Main Refactoring Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Main Refactoring Unit</em>'.

+	 * @see comrel.CompositeRefactoring#getMainRefactoringUnit()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EReference getCompositeRefactoring_MainRefactoringUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.CompositeRefactoring#getPortMappings <em>Port Mappings</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Port Mappings</em>'.

+	 * @see comrel.CompositeRefactoring#getPortMappings()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EReference getCompositeRefactoring_PortMappings();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.CompositeRefactoring#getModelRefactorings <em>Model Refactorings</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Model Refactorings</em>'.

+	 * @see comrel.CompositeRefactoring#getModelRefactorings()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EReference getCompositeRefactoring_ModelRefactorings();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.CompositeRefactoring#getHelper <em>Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Helper</em>'.

+	 * @see comrel.CompositeRefactoring#getHelper()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EReference getCompositeRefactoring_Helper();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.CompositeRefactoring#getMappingVisualization <em>Mapping Visualization</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Mapping Visualization</em>'.

+	 * @see comrel.CompositeRefactoring#getMappingVisualization()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EAttribute getCompositeRefactoring_MappingVisualization();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.CompositeRefactoring#getCustomInitialCondition <em>Custom Initial Condition</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Custom Initial Condition</em>'.

+	 * @see comrel.CompositeRefactoring#getCustomInitialCondition()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EAttribute getCompositeRefactoring_CustomInitialCondition();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.CompositeRefactoring#getCustomFinalCondition <em>Custom Final Condition</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Custom Final Condition</em>'.

+	 * @see comrel.CompositeRefactoring#getCustomFinalCondition()

+	 * @see #getCompositeRefactoring()

+	 * @generated

+	 */

+	EAttribute getCompositeRefactoring_CustomFinalCondition();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.NamedElement <em>Named Element</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Named Element</em>'.

+	 * @see comrel.NamedElement

+	 * @generated

+	 */

+	EClass getNamedElement();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.NamedElement#getName <em>Name</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Name</em>'.

+	 * @see comrel.NamedElement#getName()

+	 * @see #getNamedElement()

+	 * @generated

+	 */

+	EAttribute getNamedElement_Name();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.DescribedElement <em>Described Element</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Described Element</em>'.

+	 * @see comrel.DescribedElement

+	 * @generated

+	 */

+	EClass getDescribedElement();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.DescribedElement#getDescription <em>Description</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Description</em>'.

+	 * @see comrel.DescribedElement#getDescription()

+	 * @see #getDescribedElement()

+	 * @generated

+	 */

+	EAttribute getDescribedElement_Description();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.RefactoringUnit <em>Refactoring Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Refactoring Unit</em>'.

+	 * @see comrel.RefactoringUnit

+	 * @generated

+	 */

+	EClass getRefactoringUnit();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.RefactoringUnit#getSeqExecutionOrder <em>Seq Execution Order</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Seq Execution Order</em>'.

+	 * @see comrel.RefactoringUnit#getSeqExecutionOrder()

+	 * @see #getRefactoringUnit()

+	 * @generated

+	 */

+	EAttribute getRefactoringUnit_SeqExecutionOrder();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.ModelRefactoring <em>Model Refactoring</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Model Refactoring</em>'.

+	 * @see comrel.ModelRefactoring

+	 * @generated

+	 */

+	EClass getModelRefactoring();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ModelRefactoring#getRefId <em>Ref Id</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Ref Id</em>'.

+	 * @see comrel.ModelRefactoring#getRefId()

+	 * @see #getModelRefactoring()

+	 * @generated

+	 */

+	EAttribute getModelRefactoring_RefId();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ModelRefactoring#getLabel <em>Label</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Label</em>'.

+	 * @see comrel.ModelRefactoring#getLabel()

+	 * @see #getModelRefactoring()

+	 * @generated

+	 */

+	EAttribute getModelRefactoring_Label();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ModelRefactoring#getNamespaceUri <em>Namespace Uri</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Namespace Uri</em>'.

+	 * @see comrel.ModelRefactoring#getNamespaceUri()

+	 * @see #getModelRefactoring()

+	 * @generated

+	 */

+	EAttribute getModelRefactoring_NamespaceUri();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.ModelRefactoring#getInputPorts <em>Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Input Ports</em>'.

+	 * @see comrel.ModelRefactoring#getInputPorts()

+	 * @see #getModelRefactoring()

+	 * @generated

+	 */

+	EReference getModelRefactoring_InputPorts();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.AtomicUnit <em>Atomic Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Atomic Unit</em>'.

+	 * @see comrel.AtomicUnit

+	 * @generated

+	 */

+	EClass getAtomicUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.AtomicUnit#getInputPorts <em>Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Input Ports</em>'.

+	 * @see comrel.AtomicUnit#getInputPorts()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EReference getAtomicUnit_InputPorts();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.AtomicUnit#getUnitId <em>Unit Id</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Unit Id</em>'.

+	 * @see comrel.AtomicUnit#getUnitId()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EAttribute getAtomicUnit_UnitId();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.AtomicUnit#getLabel <em>Label</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Label</em>'.

+	 * @see comrel.AtomicUnit#getLabel()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EAttribute getAtomicUnit_Label();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.AtomicUnit#getNamespaceUri <em>Namespace Uri</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Namespace Uri</em>'.

+	 * @see comrel.AtomicUnit#getNamespaceUri()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EAttribute getAtomicUnit_NamespaceUri();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.AtomicUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.AtomicUnit#getType()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EAttribute getAtomicUnit_Type();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.AtomicUnit#getModelRefactoring <em>Model Refactoring</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Model Refactoring</em>'.

+	 * @see comrel.AtomicUnit#getModelRefactoring()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EReference getAtomicUnit_ModelRefactoring();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.AtomicUnit#isCheckInitialConditionFlag <em>Check Initial Condition Flag</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Check Initial Condition Flag</em>'.

+	 * @see comrel.AtomicUnit#isCheckInitialConditionFlag()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EAttribute getAtomicUnit_CheckInitialConditionFlag();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.AtomicUnit#isCheckFinalConditionFlag <em>Check Final Condition Flag</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Check Final Condition Flag</em>'.

+	 * @see comrel.AtomicUnit#isCheckFinalConditionFlag()

+	 * @see #getAtomicUnit()

+	 * @generated

+	 */

+	EAttribute getAtomicUnit_CheckFinalConditionFlag();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.CompositeUnit <em>Composite Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Composite Unit</em>'.

+	 * @see comrel.CompositeUnit

+	 * @generated

+	 */

+	EClass getCompositeUnit();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SequentialUnit <em>Sequential Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Sequential Unit</em>'.

+	 * @see comrel.SequentialUnit

+	 * @generated

+	 */

+	EClass getSequentialUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.SequentialUnit#getHelperUnits <em>Helper Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Helper Units</em>'.

+	 * @see comrel.SequentialUnit#getHelperUnits()

+	 * @see #getSequentialUnit()

+	 * @generated

+	 */

+	EReference getSequentialUnit_HelperUnits();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.SequentialUnit#getRefactoringUnits <em>Refactoring Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Refactoring Units</em>'.

+	 * @see comrel.SequentialUnit#getRefactoringUnits()

+	 * @see #getSequentialUnit()

+	 * @generated

+	 */

+	EReference getSequentialUnit_RefactoringUnits();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.SequentialUnit#getInputPorts <em>Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Input Ports</em>'.

+	 * @see comrel.SequentialUnit#getInputPorts()

+	 * @see #getSequentialUnit()

+	 * @generated

+	 */

+	EReference getSequentialUnit_InputPorts();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SequentialUnit#isStrict <em>Strict</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Strict</em>'.

+	 * @see comrel.SequentialUnit#isStrict()

+	 * @see #getSequentialUnit()

+	 * @generated

+	 */

+	EAttribute getSequentialUnit_Strict();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SequentialUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.SequentialUnit#getType()

+	 * @see #getSequentialUnit()

+	 * @generated

+	 */

+	EAttribute getSequentialUnit_Type();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SequentialUnit#getLblStrict <em>Lbl Strict</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Lbl Strict</em>'.

+	 * @see comrel.SequentialUnit#getLblStrict()

+	 * @see #getSequentialUnit()

+	 * @generated

+	 */

+	EAttribute getSequentialUnit_LblStrict();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.ConditionCheck <em>Condition Check</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Condition Check</em>'.

+	 * @see comrel.ConditionCheck

+	 * @generated

+	 */

+	EClass getConditionCheck();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ConditionCheck#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.ConditionCheck#getType()

+	 * @see #getConditionCheck()

+	 * @generated

+	 */

+	EAttribute getConditionCheck_Type();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ConditionCheck#getSpec <em>Spec</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Spec</em>'.

+	 * @see comrel.ConditionCheck#getSpec()

+	 * @see #getConditionCheck()

+	 * @generated

+	 */

+	EAttribute getConditionCheck_Spec();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.ConditionalUnit <em>Conditional Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Conditional Unit</em>'.

+	 * @see comrel.ConditionalUnit

+	 * @generated

+	 */

+	EClass getConditionalUnit();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.ConditionalUnit#getIf <em>If</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>If</em>'.

+	 * @see comrel.ConditionalUnit#getIf()

+	 * @see #getConditionalUnit()

+	 * @generated

+	 */

+	EReference getConditionalUnit_If();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.ConditionalUnit#getHelperUnits <em>Helper Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Helper Units</em>'.

+	 * @see comrel.ConditionalUnit#getHelperUnits()

+	 * @see #getConditionalUnit()

+	 * @generated

+	 */

+	EReference getConditionalUnit_HelperUnits();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.ConditionalUnit#getThen <em>Then</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Then</em>'.

+	 * @see comrel.ConditionalUnit#getThen()

+	 * @see #getConditionalUnit()

+	 * @generated

+	 */

+	EReference getConditionalUnit_Then();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.ConditionalUnit#getElse <em>Else</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Else</em>'.

+	 * @see comrel.ConditionalUnit#getElse()

+	 * @see #getConditionalUnit()

+	 * @generated

+	 */

+	EReference getConditionalUnit_Else();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.ConditionalUnit#getInputPorts <em>Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Input Ports</em>'.

+	 * @see comrel.ConditionalUnit#getInputPorts()

+	 * @see #getConditionalUnit()

+	 * @generated

+	 */

+	EReference getConditionalUnit_InputPorts();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ConditionalUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.ConditionalUnit#getType()

+	 * @see #getConditionalUnit()

+	 * @generated

+	 */

+	EAttribute getConditionalUnit_Type();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.QueuedUnit <em>Queued Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Queued Unit</em>'.

+	 * @see comrel.QueuedUnit

+	 * @generated

+	 */

+	EClass getQueuedUnit();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.QueuedUnit#isStrict <em>Strict</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Strict</em>'.

+	 * @see comrel.QueuedUnit#isStrict()

+	 * @see #getQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getQueuedUnit_Strict();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleQueuedUnit <em>Single Queued Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Queued Unit</em>'.

+	 * @see comrel.SingleQueuedUnit

+	 * @generated

+	 */

+	EClass getSingleQueuedUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.SingleQueuedUnit#getHelperUnits <em>Helper Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Helper Units</em>'.

+	 * @see comrel.SingleQueuedUnit#getHelperUnits()

+	 * @see #getSingleQueuedUnit()

+	 * @generated

+	 */

+	EReference getSingleQueuedUnit_HelperUnits();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleQueuedUnit#getRefactoringUnit <em>Refactoring Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Refactoring Unit</em>'.

+	 * @see comrel.SingleQueuedUnit#getRefactoringUnit()

+	 * @see #getSingleQueuedUnit()

+	 * @generated

+	 */

+	EReference getSingleQueuedUnit_RefactoringUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.SingleQueuedUnit#getSingleInputPorts <em>Single Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Single Input Ports</em>'.

+	 * @see comrel.SingleQueuedUnit#getSingleInputPorts()

+	 * @see #getSingleQueuedUnit()

+	 * @generated

+	 */

+	EReference getSingleQueuedUnit_SingleInputPorts();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleQueuedUnit#getMultiInputPort <em>Multi Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Multi Input Port</em>'.

+	 * @see comrel.SingleQueuedUnit#getMultiInputPort()

+	 * @see #getSingleQueuedUnit()

+	 * @generated

+	 */

+	EReference getSingleQueuedUnit_MultiInputPort();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SingleQueuedUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.SingleQueuedUnit#getType()

+	 * @see #getSingleQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getSingleQueuedUnit_Type();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SingleQueuedUnit#getLblStrict <em>Lbl Strict</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Lbl Strict</em>'.

+	 * @see comrel.SingleQueuedUnit#getLblStrict()

+	 * @see #getSingleQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getSingleQueuedUnit_LblStrict();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.TwicedQueuedUnit <em>Twiced Queued Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Twiced Queued Unit</em>'.

+	 * @see comrel.TwicedQueuedUnit

+	 * @generated

+	 */

+	EClass getTwicedQueuedUnit();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.CartesianQueuedUnit <em>Cartesian Queued Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Cartesian Queued Unit</em>'.

+	 * @see comrel.CartesianQueuedUnit

+	 * @generated

+	 */

+	EClass getCartesianQueuedUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.CartesianQueuedUnit#getHelperUnits <em>Helper Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Helper Units</em>'.

+	 * @see comrel.CartesianQueuedUnit#getHelperUnits()

+	 * @see #getCartesianQueuedUnit()

+	 * @generated

+	 */

+	EReference getCartesianQueuedUnit_HelperUnits();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.CartesianQueuedUnit#getRefactoringUnit <em>Refactoring Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Refactoring Unit</em>'.

+	 * @see comrel.CartesianQueuedUnit#getRefactoringUnit()

+	 * @see #getCartesianQueuedUnit()

+	 * @generated

+	 */

+	EReference getCartesianQueuedUnit_RefactoringUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.CartesianQueuedUnit#getSingleInputPorts <em>Single Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Single Input Ports</em>'.

+	 * @see comrel.CartesianQueuedUnit#getSingleInputPorts()

+	 * @see #getCartesianQueuedUnit()

+	 * @generated

+	 */

+	EReference getCartesianQueuedUnit_SingleInputPorts();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.CartesianQueuedUnit#getMultiInputPorts <em>Multi Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Multi Input Ports</em>'.

+	 * @see comrel.CartesianQueuedUnit#getMultiInputPorts()

+	 * @see #getCartesianQueuedUnit()

+	 * @generated

+	 */

+	EReference getCartesianQueuedUnit_MultiInputPorts();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.CartesianQueuedUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.CartesianQueuedUnit#getType()

+	 * @see #getCartesianQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getCartesianQueuedUnit_Type();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.CartesianQueuedUnit#getLblStrict <em>Lbl Strict</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Lbl Strict</em>'.

+	 * @see comrel.CartesianQueuedUnit#getLblStrict()

+	 * @see #getCartesianQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getCartesianQueuedUnit_LblStrict();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.ParallelQueuedUnit <em>Parallel Queued Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Parallel Queued Unit</em>'.

+	 * @see comrel.ParallelQueuedUnit

+	 * @generated

+	 */

+	EClass getParallelQueuedUnit();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.ParallelQueuedUnit#getHelperUnits <em>Helper Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Helper Units</em>'.

+	 * @see comrel.ParallelQueuedUnit#getHelperUnits()

+	 * @see #getParallelQueuedUnit()

+	 * @generated

+	 */

+	EReference getParallelQueuedUnit_HelperUnits();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.ParallelQueuedUnit#getRefactoringUnits <em>Refactoring Units</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Refactoring Units</em>'.

+	 * @see comrel.ParallelQueuedUnit#getRefactoringUnits()

+	 * @see #getParallelQueuedUnit()

+	 * @generated

+	 */

+	EReference getParallelQueuedUnit_RefactoringUnits();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.ParallelQueuedUnit#getSingleInputPorts <em>Single Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Single Input Ports</em>'.

+	 * @see comrel.ParallelQueuedUnit#getSingleInputPorts()

+	 * @see #getParallelQueuedUnit()

+	 * @generated

+	 */

+	EReference getParallelQueuedUnit_SingleInputPorts();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.ParallelQueuedUnit#getMultiInputPorts <em>Multi Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Multi Input Ports</em>'.

+	 * @see comrel.ParallelQueuedUnit#getMultiInputPorts()

+	 * @see #getParallelQueuedUnit()

+	 * @generated

+	 */

+	EReference getParallelQueuedUnit_MultiInputPorts();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ParallelQueuedUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.ParallelQueuedUnit#getType()

+	 * @see #getParallelQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getParallelQueuedUnit_Type();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.ParallelQueuedUnit#getLblStrict <em>Lbl Strict</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Lbl Strict</em>'.

+	 * @see comrel.ParallelQueuedUnit#getLblStrict()

+	 * @see #getParallelQueuedUnit()

+	 * @generated

+	 */

+	EAttribute getParallelQueuedUnit_LblStrict();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.HelperUnit <em>Helper Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Helper Unit</em>'.

+	 * @see comrel.HelperUnit

+	 * @generated

+	 */

+	EClass getHelperUnit();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.HelperUnit#getHelperUnitId <em>Helper Unit Id</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Helper Unit Id</em>'.

+	 * @see comrel.HelperUnit#getHelperUnitId()

+	 * @see #getHelperUnit()

+	 * @generated

+	 */

+	EAttribute getHelperUnit_HelperUnitId();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.HelperUnit#getNamespaceUri <em>Namespace Uri</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Namespace Uri</em>'.

+	 * @see comrel.HelperUnit#getNamespaceUri()

+	 * @see #getHelperUnit()

+	 * @generated

+	 */

+	EAttribute getHelperUnit_NamespaceUri();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.FeatureUnit <em>Feature Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Feature Unit</em>'.

+	 * @see comrel.FeatureUnit

+	 * @generated

+	 */

+	EClass getFeatureUnit();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleFeatureUnit <em>Single Feature Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Feature Unit</em>'.

+	 * @see comrel.SingleFeatureUnit

+	 * @generated

+	 */

+	EClass getSingleFeatureUnit();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleFeatureUnit#getInputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Input Port</em>'.

+	 * @see comrel.SingleFeatureUnit#getInputPort()

+	 * @see #getSingleFeatureUnit()

+	 * @generated

+	 */

+	EReference getSingleFeatureUnit_InputPort();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.SingleFeatureUnit#getSecondaryInputPorts <em>Secondary Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Secondary Input Ports</em>'.

+	 * @see comrel.SingleFeatureUnit#getSecondaryInputPorts()

+	 * @see #getSingleFeatureUnit()

+	 * @generated

+	 */

+	EReference getSingleFeatureUnit_SecondaryInputPorts();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleFeatureUnit#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.SingleFeatureUnit#getOutputPort()

+	 * @see #getSingleFeatureUnit()

+	 * @generated

+	 */

+	EReference getSingleFeatureUnit_OutputPort();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.SingleFeatureUnit#getSingleFeatureHelper <em>Single Feature Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Single Feature Helper</em>'.

+	 * @see comrel.SingleFeatureUnit#getSingleFeatureHelper()

+	 * @see #getSingleFeatureUnit()

+	 * @generated

+	 */

+	EReference getSingleFeatureUnit_SingleFeatureHelper();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SingleFeatureUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.SingleFeatureUnit#getType()

+	 * @see #getSingleFeatureUnit()

+	 * @generated

+	 */

+	EAttribute getSingleFeatureUnit_Type();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiFeatureUnit <em>Multi Feature Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Feature Unit</em>'.

+	 * @see comrel.MultiFeatureUnit

+	 * @generated

+	 */

+	EClass getMultiFeatureUnit();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.MultiFeatureUnit#getInputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Input Port</em>'.

+	 * @see comrel.MultiFeatureUnit#getInputPort()

+	 * @see #getMultiFeatureUnit()

+	 * @generated

+	 */

+	EReference getMultiFeatureUnit_InputPort();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.MultiFeatureUnit#getSecondaryInputPorts <em>Secondary Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Secondary Input Ports</em>'.

+	 * @see comrel.MultiFeatureUnit#getSecondaryInputPorts()

+	 * @see #getMultiFeatureUnit()

+	 * @generated

+	 */

+	EReference getMultiFeatureUnit_SecondaryInputPorts();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.MultiFeatureUnit#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.MultiFeatureUnit#getOutputPort()

+	 * @see #getMultiFeatureUnit()

+	 * @generated

+	 */

+	EReference getMultiFeatureUnit_OutputPort();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.MultiFeatureUnit#getMultiFeatureHelper <em>Multi Feature Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Multi Feature Helper</em>'.

+	 * @see comrel.MultiFeatureUnit#getMultiFeatureHelper()

+	 * @see #getMultiFeatureUnit()

+	 * @generated

+	 */

+	EReference getMultiFeatureUnit_MultiFeatureHelper();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.MultiFeatureUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.MultiFeatureUnit#getType()

+	 * @see #getMultiFeatureUnit()

+	 * @generated

+	 */

+	EAttribute getMultiFeatureUnit_Type();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.FilterUnit <em>Filter Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Filter Unit</em>'.

+	 * @see comrel.FilterUnit

+	 * @generated

+	 */

+	EClass getFilterUnit();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleFilterUnit <em>Single Filter Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Filter Unit</em>'.

+	 * @see comrel.SingleFilterUnit

+	 * @generated

+	 */

+	EClass getSingleFilterUnit();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleFilterUnit#getInputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Input Port</em>'.

+	 * @see comrel.SingleFilterUnit#getInputPort()

+	 * @see #getSingleFilterUnit()

+	 * @generated

+	 */

+	EReference getSingleFilterUnit_InputPort();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleFilterUnit#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.SingleFilterUnit#getOutputPort()

+	 * @see #getSingleFilterUnit()

+	 * @generated

+	 */

+	EReference getSingleFilterUnit_OutputPort();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.SingleFilterUnit#getSingleFilterHelper <em>Single Filter Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Single Filter Helper</em>'.

+	 * @see comrel.SingleFilterUnit#getSingleFilterHelper()

+	 * @see #getSingleFilterUnit()

+	 * @generated

+	 */

+	EReference getSingleFilterUnit_SingleFilterHelper();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SingleFilterUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.SingleFilterUnit#getType()

+	 * @see #getSingleFilterUnit()

+	 * @generated

+	 */

+	EAttribute getSingleFilterUnit_Type();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiFilterUnit <em>Multi Filter Unit</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Filter Unit</em>'.

+	 * @see comrel.MultiFilterUnit

+	 * @generated

+	 */

+	EClass getMultiFilterUnit();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.MultiFilterUnit#getInputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Input Port</em>'.

+	 * @see comrel.MultiFilterUnit#getInputPort()

+	 * @see #getMultiFilterUnit()

+	 * @generated

+	 */

+	EReference getMultiFilterUnit_InputPort();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.MultiFilterUnit#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.MultiFilterUnit#getOutputPort()

+	 * @see #getMultiFilterUnit()

+	 * @generated

+	 */

+	EReference getMultiFilterUnit_OutputPort();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.MultiFilterUnit#getMultiFilterHelper <em>Multi Filter Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Multi Filter Helper</em>'.

+	 * @see comrel.MultiFilterUnit#getMultiFilterHelper()

+	 * @see #getMultiFilterUnit()

+	 * @generated

+	 */

+	EReference getMultiFilterUnit_MultiFilterHelper();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.MultiFilterUnit#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.MultiFilterUnit#getType()

+	 * @see #getMultiFilterUnit()

+	 * @generated

+	 */

+	EAttribute getMultiFilterUnit_Type();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.Helper <em>Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Helper</em>'.

+	 * @see comrel.Helper

+	 * @generated

+	 */

+	EClass getHelper();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.Helper#getHelperId <em>Helper Id</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Helper Id</em>'.

+	 * @see comrel.Helper#getHelperId()

+	 * @see #getHelper()

+	 * @generated

+	 */

+	EAttribute getHelper_HelperId();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.Helper#getNamespaceUri <em>Namespace Uri</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Namespace Uri</em>'.

+	 * @see comrel.Helper#getNamespaceUri()

+	 * @see #getHelper()

+	 * @generated

+	 */

+	EAttribute getHelper_NamespaceUri();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.FeatureHelper <em>Feature Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Feature Helper</em>'.

+	 * @see comrel.FeatureHelper

+	 * @generated

+	 */

+	EClass getFeatureHelper();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.FeatureHelper#getInputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Input Port</em>'.

+	 * @see comrel.FeatureHelper#getInputPort()

+	 * @see #getFeatureHelper()

+	 * @generated

+	 */

+	EReference getFeatureHelper_InputPort();

+

+	/**

+	 * Returns the meta object for the containment reference list '{@link comrel.FeatureHelper#getSecondaryInputPorts <em>Secondary Input Ports</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference list '<em>Secondary Input Ports</em>'.

+	 * @see comrel.FeatureHelper#getSecondaryInputPorts()

+	 * @see #getFeatureHelper()

+	 * @generated

+	 */

+	EReference getFeatureHelper_SecondaryInputPorts();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleFeatureHelper <em>Single Feature Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Feature Helper</em>'.

+	 * @see comrel.SingleFeatureHelper

+	 * @generated

+	 */

+	EClass getSingleFeatureHelper();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleFeatureHelper#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.SingleFeatureHelper#getOutputPort()

+	 * @see #getSingleFeatureHelper()

+	 * @generated

+	 */

+	EReference getSingleFeatureHelper_OutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiFeatureHelper <em>Multi Feature Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Feature Helper</em>'.

+	 * @see comrel.MultiFeatureHelper

+	 * @generated

+	 */

+	EClass getMultiFeatureHelper();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.MultiFeatureHelper#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.MultiFeatureHelper#getOutputPort()

+	 * @see #getMultiFeatureHelper()

+	 * @generated

+	 */

+	EReference getMultiFeatureHelper_OutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.FilterHelper <em>Filter Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Filter Helper</em>'.

+	 * @see comrel.FilterHelper

+	 * @generated

+	 */

+	EClass getFilterHelper();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.FilterHelper#getInputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Input Port</em>'.

+	 * @see comrel.FilterHelper#getInputPort()

+	 * @see #getFilterHelper()

+	 * @generated

+	 */

+	EReference getFilterHelper_InputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleFilterHelper <em>Single Filter Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Filter Helper</em>'.

+	 * @see comrel.SingleFilterHelper

+	 * @generated

+	 */

+	EClass getSingleFilterHelper();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.SingleFilterHelper#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.SingleFilterHelper#getOutputPort()

+	 * @see #getSingleFilterHelper()

+	 * @generated

+	 */

+	EReference getSingleFilterHelper_OutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiFilterHelper <em>Multi Filter Helper</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Filter Helper</em>'.

+	 * @see comrel.MultiFilterHelper

+	 * @generated

+	 */

+	EClass getMultiFilterHelper();

+

+	/**

+	 * Returns the meta object for the containment reference '{@link comrel.MultiFilterHelper#getOutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the containment reference '<em>Output Port</em>'.

+	 * @see comrel.MultiFilterHelper#getOutputPort()

+	 * @see #getMultiFilterHelper()

+	 * @generated

+	 */

+	EReference getMultiFilterHelper_OutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.Port <em>Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Port</em>'.

+	 * @see comrel.Port

+	 * @generated

+	 */

+	EClass getPort();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.Port#getType <em>Type</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Type</em>'.

+	 * @see comrel.Port#getType()

+	 * @see #getPort()

+	 * @generated

+	 */

+	EAttribute getPort_Type();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SinglePort <em>Single Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Port</em>'.

+	 * @see comrel.SinglePort

+	 * @generated

+	 */

+	EClass getSinglePort();

+

+	/**

+	 * Returns the meta object for the attribute '{@link comrel.SinglePort#getValue <em>Value</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute '<em>Value</em>'.

+	 * @see comrel.SinglePort#getValue()

+	 * @see #getSinglePort()

+	 * @generated

+	 */

+	EAttribute getSinglePort_Value();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiPort <em>Multi Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Port</em>'.

+	 * @see comrel.MultiPort

+	 * @generated

+	 */

+	EClass getMultiPort();

+

+	/**

+	 * Returns the meta object for the attribute list '{@link comrel.MultiPort#getValue <em>Value</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the attribute list '<em>Value</em>'.

+	 * @see comrel.MultiPort#getValue()

+	 * @see #getMultiPort()

+	 * @generated

+	 */

+	EAttribute getMultiPort_Value();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.InputPort <em>Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Input Port</em>'.

+	 * @see comrel.InputPort

+	 * @generated

+	 */

+	EClass getInputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.OutputPort <em>Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Output Port</em>'.

+	 * @see comrel.OutputPort

+	 * @generated

+	 */

+	EClass getOutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleInputPort <em>Single Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Input Port</em>'.

+	 * @see comrel.SingleInputPort

+	 * @generated

+	 */

+	EClass getSingleInputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiInputPort <em>Multi Input Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Input Port</em>'.

+	 * @see comrel.MultiInputPort

+	 * @generated

+	 */

+	EClass getMultiInputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SingleOutputPort <em>Single Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Output Port</em>'.

+	 * @see comrel.SingleOutputPort

+	 * @generated

+	 */

+	EClass getSingleOutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiOutputPort <em>Multi Output Port</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Output Port</em>'.

+	 * @see comrel.MultiOutputPort

+	 * @generated

+	 */

+	EClass getMultiOutputPort();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.PortMapping <em>Port Mapping</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Port Mapping</em>'.

+	 * @see comrel.PortMapping

+	 * @generated

+	 */

+	EClass getPortMapping();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.SinglePortMapping <em>Single Port Mapping</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Single Port Mapping</em>'.

+	 * @see comrel.SinglePortMapping

+	 * @generated

+	 */

+	EClass getSinglePortMapping();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.SinglePortMapping#getSource <em>Source</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Source</em>'.

+	 * @see comrel.SinglePortMapping#getSource()

+	 * @see #getSinglePortMapping()

+	 * @generated

+	 */

+	EReference getSinglePortMapping_Source();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.SinglePortMapping#getTarget <em>Target</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Target</em>'.

+	 * @see comrel.SinglePortMapping#getTarget()

+	 * @see #getSinglePortMapping()

+	 * @generated

+	 */

+	EReference getSinglePortMapping_Target();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiPortMapping <em>Multi Port Mapping</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Port Mapping</em>'.

+	 * @see comrel.MultiPortMapping

+	 * @generated

+	 */

+	EClass getMultiPortMapping();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.MultiPortMapping#getSource <em>Source</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Source</em>'.

+	 * @see comrel.MultiPortMapping#getSource()

+	 * @see #getMultiPortMapping()

+	 * @generated

+	 */

+	EReference getMultiPortMapping_Source();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.MultiPortMapping#getTarget <em>Target</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Target</em>'.

+	 * @see comrel.MultiPortMapping#getTarget()

+	 * @see #getMultiPortMapping()

+	 * @generated

+	 */

+	EReference getMultiPortMapping_Target();

+

+	/**

+	 * Returns the meta object for class '{@link comrel.MultiSinglePortMapping <em>Multi Single Port Mapping</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for class '<em>Multi Single Port Mapping</em>'.

+	 * @see comrel.MultiSinglePortMapping

+	 * @generated

+	 */

+	EClass getMultiSinglePortMapping();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.MultiSinglePortMapping#getSource <em>Source</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Source</em>'.

+	 * @see comrel.MultiSinglePortMapping#getSource()

+	 * @see #getMultiSinglePortMapping()

+	 * @generated

+	 */

+	EReference getMultiSinglePortMapping_Source();

+

+	/**

+	 * Returns the meta object for the reference '{@link comrel.MultiSinglePortMapping#getTarget <em>Target</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for the reference '<em>Target</em>'.

+	 * @see comrel.MultiSinglePortMapping#getTarget()

+	 * @see #getMultiSinglePortMapping()

+	 * @generated

+	 */

+	EReference getMultiSinglePortMapping_Target();

+

+	/**

+	 * Returns the meta object for enum '{@link comrel.MappingVisualization <em>Mapping Visualization</em>}'.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @return the meta object for enum '<em>Mapping Visualization</em>'.

+	 * @see comrel.MappingVisualization

+	 * @generated

+	 */

+	EEnum getMappingVisualization();

+

+	/**

+	 * 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

+	 */

+	ComrelFactory getComrelFactory();

+

+	/**

+	 * <!-- 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 enum,</li>

+	 *   <li>and each data type</li>

+	 * </ul>

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	interface Literals {

+		/**

+		 * The meta object literal for the '{@link comrel.impl.CompositeRefactoringImpl <em>Composite Refactoring</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.CompositeRefactoringImpl

+		 * @see comrel.impl.ComrelPackageImpl#getCompositeRefactoring()

+		 * @generated

+		 */

+		EClass COMPOSITE_REFACTORING = eINSTANCE.getCompositeRefactoring();

+

+		/**

+		 * The meta object literal for the '<em><b>Main Refactoring Unit</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT = eINSTANCE.getCompositeRefactoring_MainRefactoringUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Port Mappings</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference COMPOSITE_REFACTORING__PORT_MAPPINGS = eINSTANCE.getCompositeRefactoring_PortMappings();

+

+		/**

+		 * The meta object literal for the '<em><b>Model Refactorings</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference COMPOSITE_REFACTORING__MODEL_REFACTORINGS = eINSTANCE.getCompositeRefactoring_ModelRefactorings();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference COMPOSITE_REFACTORING__HELPER = eINSTANCE.getCompositeRefactoring_Helper();

+

+		/**

+		 * The meta object literal for the '<em><b>Mapping Visualization</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute COMPOSITE_REFACTORING__MAPPING_VISUALIZATION = eINSTANCE.getCompositeRefactoring_MappingVisualization();

+

+		/**

+		 * The meta object literal for the '<em><b>Custom Initial Condition</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION = eINSTANCE.getCompositeRefactoring_CustomInitialCondition();

+

+		/**

+		 * The meta object literal for the '<em><b>Custom Final Condition</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION = eINSTANCE.getCompositeRefactoring_CustomFinalCondition();

+

+		/**

+		 * The meta object literal for the '{@link comrel.NamedElement <em>Named Element</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.NamedElement

+		 * @see comrel.impl.ComrelPackageImpl#getNamedElement()

+		 * @generated

+		 */

+		EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();

+

+		/**

+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();

+

+		/**

+		 * The meta object literal for the '{@link comrel.DescribedElement <em>Described Element</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.DescribedElement

+		 * @see comrel.impl.ComrelPackageImpl#getDescribedElement()

+		 * @generated

+		 */

+		EClass DESCRIBED_ELEMENT = eINSTANCE.getDescribedElement();

+

+		/**

+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute DESCRIBED_ELEMENT__DESCRIPTION = eINSTANCE.getDescribedElement_Description();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.RefactoringUnitImpl <em>Refactoring Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.RefactoringUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getRefactoringUnit()

+		 * @generated

+		 */

+		EClass REFACTORING_UNIT = eINSTANCE.getRefactoringUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Seq Execution Order</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute REFACTORING_UNIT__SEQ_EXECUTION_ORDER = eINSTANCE.getRefactoringUnit_SeqExecutionOrder();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.ModelRefactoringImpl <em>Model Refactoring</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.ModelRefactoringImpl

+		 * @see comrel.impl.ComrelPackageImpl#getModelRefactoring()

+		 * @generated

+		 */

+		EClass MODEL_REFACTORING = eINSTANCE.getModelRefactoring();

+

+		/**

+		 * The meta object literal for the '<em><b>Ref Id</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MODEL_REFACTORING__REF_ID = eINSTANCE.getModelRefactoring_RefId();

+

+		/**

+		 * The meta object literal for the '<em><b>Label</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MODEL_REFACTORING__LABEL = eINSTANCE.getModelRefactoring_Label();

+

+		/**

+		 * The meta object literal for the '<em><b>Namespace Uri</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MODEL_REFACTORING__NAMESPACE_URI = eINSTANCE.getModelRefactoring_NamespaceUri();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MODEL_REFACTORING__INPUT_PORTS = eINSTANCE.getModelRefactoring_InputPorts();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.AtomicUnitImpl <em>Atomic Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.AtomicUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getAtomicUnit()

+		 * @generated

+		 */

+		EClass ATOMIC_UNIT = eINSTANCE.getAtomicUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference ATOMIC_UNIT__INPUT_PORTS = eINSTANCE.getAtomicUnit_InputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Unit Id</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute ATOMIC_UNIT__UNIT_ID = eINSTANCE.getAtomicUnit_UnitId();

+

+		/**

+		 * The meta object literal for the '<em><b>Label</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute ATOMIC_UNIT__LABEL = eINSTANCE.getAtomicUnit_Label();

+

+		/**

+		 * The meta object literal for the '<em><b>Namespace Uri</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute ATOMIC_UNIT__NAMESPACE_URI = eINSTANCE.getAtomicUnit_NamespaceUri();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute ATOMIC_UNIT__TYPE = eINSTANCE.getAtomicUnit_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Model Refactoring</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference ATOMIC_UNIT__MODEL_REFACTORING = eINSTANCE.getAtomicUnit_ModelRefactoring();

+

+		/**

+		 * The meta object literal for the '<em><b>Check Initial Condition Flag</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG = eINSTANCE.getAtomicUnit_CheckInitialConditionFlag();

+

+		/**

+		 * The meta object literal for the '<em><b>Check Final Condition Flag</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG = eINSTANCE.getAtomicUnit_CheckFinalConditionFlag();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.CompositeUnitImpl <em>Composite Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.CompositeUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getCompositeUnit()

+		 * @generated

+		 */

+		EClass COMPOSITE_UNIT = eINSTANCE.getCompositeUnit();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SequentialUnitImpl <em>Sequential Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SequentialUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSequentialUnit()

+		 * @generated

+		 */

+		EClass SEQUENTIAL_UNIT = eINSTANCE.getSequentialUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Units</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SEQUENTIAL_UNIT__HELPER_UNITS = eINSTANCE.getSequentialUnit_HelperUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Refactoring Units</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SEQUENTIAL_UNIT__REFACTORING_UNITS = eINSTANCE.getSequentialUnit_RefactoringUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SEQUENTIAL_UNIT__INPUT_PORTS = eINSTANCE.getSequentialUnit_InputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Strict</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SEQUENTIAL_UNIT__STRICT = eINSTANCE.getSequentialUnit_Strict();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SEQUENTIAL_UNIT__TYPE = eINSTANCE.getSequentialUnit_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Lbl Strict</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SEQUENTIAL_UNIT__LBL_STRICT = eINSTANCE.getSequentialUnit_LblStrict();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.ConditionCheckImpl <em>Condition Check</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.ConditionCheckImpl

+		 * @see comrel.impl.ComrelPackageImpl#getConditionCheck()

+		 * @generated

+		 */

+		EClass CONDITION_CHECK = eINSTANCE.getConditionCheck();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute CONDITION_CHECK__TYPE = eINSTANCE.getConditionCheck_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Spec</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute CONDITION_CHECK__SPEC = eINSTANCE.getConditionCheck_Spec();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.ConditionalUnitImpl <em>Conditional Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.ConditionalUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getConditionalUnit()

+		 * @generated

+		 */

+		EClass CONDITIONAL_UNIT = eINSTANCE.getConditionalUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>If</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CONDITIONAL_UNIT__IF = eINSTANCE.getConditionalUnit_If();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Units</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CONDITIONAL_UNIT__HELPER_UNITS = eINSTANCE.getConditionalUnit_HelperUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Then</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CONDITIONAL_UNIT__THEN = eINSTANCE.getConditionalUnit_Then();

+

+		/**

+		 * The meta object literal for the '<em><b>Else</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CONDITIONAL_UNIT__ELSE = eINSTANCE.getConditionalUnit_Else();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CONDITIONAL_UNIT__INPUT_PORTS = eINSTANCE.getConditionalUnit_InputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute CONDITIONAL_UNIT__TYPE = eINSTANCE.getConditionalUnit_Type();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.QueuedUnitImpl <em>Queued Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.QueuedUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getQueuedUnit()

+		 * @generated

+		 */

+		EClass QUEUED_UNIT = eINSTANCE.getQueuedUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Strict</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute QUEUED_UNIT__STRICT = eINSTANCE.getQueuedUnit_Strict();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleQueuedUnitImpl <em>Single Queued Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleQueuedUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleQueuedUnit()

+		 * @generated

+		 */

+		EClass SINGLE_QUEUED_UNIT = eINSTANCE.getSingleQueuedUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Units</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_QUEUED_UNIT__HELPER_UNITS = eINSTANCE.getSingleQueuedUnit_HelperUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Refactoring Unit</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_QUEUED_UNIT__REFACTORING_UNIT = eINSTANCE.getSingleQueuedUnit_RefactoringUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Single Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS = eINSTANCE.getSingleQueuedUnit_SingleInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Multi Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT = eINSTANCE.getSingleQueuedUnit_MultiInputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SINGLE_QUEUED_UNIT__TYPE = eINSTANCE.getSingleQueuedUnit_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Lbl Strict</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SINGLE_QUEUED_UNIT__LBL_STRICT = eINSTANCE.getSingleQueuedUnit_LblStrict();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.TwicedQueuedUnitImpl <em>Twiced Queued Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.TwicedQueuedUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getTwicedQueuedUnit()

+		 * @generated

+		 */

+		EClass TWICED_QUEUED_UNIT = eINSTANCE.getTwicedQueuedUnit();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.CartesianQueuedUnitImpl <em>Cartesian Queued Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.CartesianQueuedUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getCartesianQueuedUnit()

+		 * @generated

+		 */

+		EClass CARTESIAN_QUEUED_UNIT = eINSTANCE.getCartesianQueuedUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Units</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CARTESIAN_QUEUED_UNIT__HELPER_UNITS = eINSTANCE.getCartesianQueuedUnit_HelperUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Refactoring Unit</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT = eINSTANCE.getCartesianQueuedUnit_RefactoringUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Single Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS = eINSTANCE.getCartesianQueuedUnit_SingleInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Multi Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS = eINSTANCE.getCartesianQueuedUnit_MultiInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute CARTESIAN_QUEUED_UNIT__TYPE = eINSTANCE.getCartesianQueuedUnit_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Lbl Strict</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute CARTESIAN_QUEUED_UNIT__LBL_STRICT = eINSTANCE.getCartesianQueuedUnit_LblStrict();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.ParallelQueuedUnitImpl <em>Parallel Queued Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.ParallelQueuedUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getParallelQueuedUnit()

+		 * @generated

+		 */

+		EClass PARALLEL_QUEUED_UNIT = eINSTANCE.getParallelQueuedUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Units</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference PARALLEL_QUEUED_UNIT__HELPER_UNITS = eINSTANCE.getParallelQueuedUnit_HelperUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Refactoring Units</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference PARALLEL_QUEUED_UNIT__REFACTORING_UNITS = eINSTANCE.getParallelQueuedUnit_RefactoringUnits();

+

+		/**

+		 * The meta object literal for the '<em><b>Single Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS = eINSTANCE.getParallelQueuedUnit_SingleInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Multi Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS = eINSTANCE.getParallelQueuedUnit_MultiInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute PARALLEL_QUEUED_UNIT__TYPE = eINSTANCE.getParallelQueuedUnit_Type();

+

+		/**

+		 * The meta object literal for the '<em><b>Lbl Strict</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute PARALLEL_QUEUED_UNIT__LBL_STRICT = eINSTANCE.getParallelQueuedUnit_LblStrict();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.HelperUnitImpl <em>Helper Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.HelperUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getHelperUnit()

+		 * @generated

+		 */

+		EClass HELPER_UNIT = eINSTANCE.getHelperUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Unit Id</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute HELPER_UNIT__HELPER_UNIT_ID = eINSTANCE.getHelperUnit_HelperUnitId();

+

+		/**

+		 * The meta object literal for the '<em><b>Namespace Uri</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute HELPER_UNIT__NAMESPACE_URI = eINSTANCE.getHelperUnit_NamespaceUri();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.FeatureUnitImpl <em>Feature Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.FeatureUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getFeatureUnit()

+		 * @generated

+		 */

+		EClass FEATURE_UNIT = eINSTANCE.getFeatureUnit();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleFeatureUnitImpl <em>Single Feature Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleFeatureUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleFeatureUnit()

+		 * @generated

+		 */

+		EClass SINGLE_FEATURE_UNIT = eINSTANCE.getSingleFeatureUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FEATURE_UNIT__INPUT_PORT = eINSTANCE.getSingleFeatureUnit_InputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Secondary Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS = eINSTANCE.getSingleFeatureUnit_SecondaryInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FEATURE_UNIT__OUTPUT_PORT = eINSTANCE.getSingleFeatureUnit_OutputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Single Feature Helper</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER = eINSTANCE.getSingleFeatureUnit_SingleFeatureHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SINGLE_FEATURE_UNIT__TYPE = eINSTANCE.getSingleFeatureUnit_Type();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiFeatureUnitImpl <em>Multi Feature Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiFeatureUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiFeatureUnit()

+		 * @generated

+		 */

+		EClass MULTI_FEATURE_UNIT = eINSTANCE.getMultiFeatureUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FEATURE_UNIT__INPUT_PORT = eINSTANCE.getMultiFeatureUnit_InputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Secondary Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS = eINSTANCE.getMultiFeatureUnit_SecondaryInputPorts();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FEATURE_UNIT__OUTPUT_PORT = eINSTANCE.getMultiFeatureUnit_OutputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Multi Feature Helper</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER = eINSTANCE.getMultiFeatureUnit_MultiFeatureHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MULTI_FEATURE_UNIT__TYPE = eINSTANCE.getMultiFeatureUnit_Type();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.FilterUnitImpl <em>Filter Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.FilterUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getFilterUnit()

+		 * @generated

+		 */

+		EClass FILTER_UNIT = eINSTANCE.getFilterUnit();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleFilterUnitImpl <em>Single Filter Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleFilterUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleFilterUnit()

+		 * @generated

+		 */

+		EClass SINGLE_FILTER_UNIT = eINSTANCE.getSingleFilterUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FILTER_UNIT__INPUT_PORT = eINSTANCE.getSingleFilterUnit_InputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FILTER_UNIT__OUTPUT_PORT = eINSTANCE.getSingleFilterUnit_OutputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Single Filter Helper</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER = eINSTANCE.getSingleFilterUnit_SingleFilterHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SINGLE_FILTER_UNIT__TYPE = eINSTANCE.getSingleFilterUnit_Type();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiFilterUnitImpl <em>Multi Filter Unit</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiFilterUnitImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiFilterUnit()

+		 * @generated

+		 */

+		EClass MULTI_FILTER_UNIT = eINSTANCE.getMultiFilterUnit();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FILTER_UNIT__INPUT_PORT = eINSTANCE.getMultiFilterUnit_InputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FILTER_UNIT__OUTPUT_PORT = eINSTANCE.getMultiFilterUnit_OutputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Multi Filter Helper</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FILTER_UNIT__MULTI_FILTER_HELPER = eINSTANCE.getMultiFilterUnit_MultiFilterHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MULTI_FILTER_UNIT__TYPE = eINSTANCE.getMultiFilterUnit_Type();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.HelperImpl <em>Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.HelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getHelper()

+		 * @generated

+		 */

+		EClass HELPER = eINSTANCE.getHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Helper Id</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute HELPER__HELPER_ID = eINSTANCE.getHelper_HelperId();

+

+		/**

+		 * The meta object literal for the '<em><b>Namespace Uri</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute HELPER__NAMESPACE_URI = eINSTANCE.getHelper_NamespaceUri();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.FeatureHelperImpl <em>Feature Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.FeatureHelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getFeatureHelper()

+		 * @generated

+		 */

+		EClass FEATURE_HELPER = eINSTANCE.getFeatureHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference FEATURE_HELPER__INPUT_PORT = eINSTANCE.getFeatureHelper_InputPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Secondary Input Ports</b></em>' containment reference list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference FEATURE_HELPER__SECONDARY_INPUT_PORTS = eINSTANCE.getFeatureHelper_SecondaryInputPorts();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleFeatureHelperImpl <em>Single Feature Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleFeatureHelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleFeatureHelper()

+		 * @generated

+		 */

+		EClass SINGLE_FEATURE_HELPER = eINSTANCE.getSingleFeatureHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FEATURE_HELPER__OUTPUT_PORT = eINSTANCE.getSingleFeatureHelper_OutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiFeatureHelperImpl <em>Multi Feature Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiFeatureHelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiFeatureHelper()

+		 * @generated

+		 */

+		EClass MULTI_FEATURE_HELPER = eINSTANCE.getMultiFeatureHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FEATURE_HELPER__OUTPUT_PORT = eINSTANCE.getMultiFeatureHelper_OutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.FilterHelperImpl <em>Filter Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.FilterHelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getFilterHelper()

+		 * @generated

+		 */

+		EClass FILTER_HELPER = eINSTANCE.getFilterHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference FILTER_HELPER__INPUT_PORT = eINSTANCE.getFilterHelper_InputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleFilterHelperImpl <em>Single Filter Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleFilterHelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleFilterHelper()

+		 * @generated

+		 */

+		EClass SINGLE_FILTER_HELPER = eINSTANCE.getSingleFilterHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_FILTER_HELPER__OUTPUT_PORT = eINSTANCE.getSingleFilterHelper_OutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiFilterHelperImpl <em>Multi Filter Helper</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiFilterHelperImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiFilterHelper()

+		 * @generated

+		 */

+		EClass MULTI_FILTER_HELPER = eINSTANCE.getMultiFilterHelper();

+

+		/**

+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_FILTER_HELPER__OUTPUT_PORT = eINSTANCE.getMultiFilterHelper_OutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.PortImpl <em>Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.PortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getPort()

+		 * @generated

+		 */

+		EClass PORT = eINSTANCE.getPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute PORT__TYPE = eINSTANCE.getPort_Type();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SinglePortImpl <em>Single Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SinglePortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSinglePort()

+		 * @generated

+		 */

+		EClass SINGLE_PORT = eINSTANCE.getSinglePort();

+

+		/**

+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute SINGLE_PORT__VALUE = eINSTANCE.getSinglePort_Value();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiPortImpl <em>Multi Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiPort()

+		 * @generated

+		 */

+		EClass MULTI_PORT = eINSTANCE.getMultiPort();

+

+		/**

+		 * The meta object literal for the '<em><b>Value</b></em>' attribute list feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EAttribute MULTI_PORT__VALUE = eINSTANCE.getMultiPort_Value();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.InputPortImpl <em>Input Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.InputPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getInputPort()

+		 * @generated

+		 */

+		EClass INPUT_PORT = eINSTANCE.getInputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.OutputPortImpl <em>Output Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.OutputPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getOutputPort()

+		 * @generated

+		 */

+		EClass OUTPUT_PORT = eINSTANCE.getOutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleInputPortImpl <em>Single Input Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleInputPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleInputPort()

+		 * @generated

+		 */

+		EClass SINGLE_INPUT_PORT = eINSTANCE.getSingleInputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiInputPortImpl <em>Multi Input Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiInputPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiInputPort()

+		 * @generated

+		 */

+		EClass MULTI_INPUT_PORT = eINSTANCE.getMultiInputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SingleOutputPortImpl <em>Single Output Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SingleOutputPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSingleOutputPort()

+		 * @generated

+		 */

+		EClass SINGLE_OUTPUT_PORT = eINSTANCE.getSingleOutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiOutputPortImpl <em>Multi Output Port</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiOutputPortImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiOutputPort()

+		 * @generated

+		 */

+		EClass MULTI_OUTPUT_PORT = eINSTANCE.getMultiOutputPort();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.PortMappingImpl <em>Port Mapping</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.PortMappingImpl

+		 * @see comrel.impl.ComrelPackageImpl#getPortMapping()

+		 * @generated

+		 */

+		EClass PORT_MAPPING = eINSTANCE.getPortMapping();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.SinglePortMappingImpl <em>Single Port Mapping</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.SinglePortMappingImpl

+		 * @see comrel.impl.ComrelPackageImpl#getSinglePortMapping()

+		 * @generated

+		 */

+		EClass SINGLE_PORT_MAPPING = eINSTANCE.getSinglePortMapping();

+

+		/**

+		 * The meta object literal for the '<em><b>Source</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_PORT_MAPPING__SOURCE = eINSTANCE.getSinglePortMapping_Source();

+

+		/**

+		 * The meta object literal for the '<em><b>Target</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference SINGLE_PORT_MAPPING__TARGET = eINSTANCE.getSinglePortMapping_Target();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiPortMappingImpl <em>Multi Port Mapping</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiPortMappingImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiPortMapping()

+		 * @generated

+		 */

+		EClass MULTI_PORT_MAPPING = eINSTANCE.getMultiPortMapping();

+

+		/**

+		 * The meta object literal for the '<em><b>Source</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_PORT_MAPPING__SOURCE = eINSTANCE.getMultiPortMapping_Source();

+

+		/**

+		 * The meta object literal for the '<em><b>Target</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_PORT_MAPPING__TARGET = eINSTANCE.getMultiPortMapping_Target();

+

+		/**

+		 * The meta object literal for the '{@link comrel.impl.MultiSinglePortMappingImpl <em>Multi Single Port Mapping</em>}' class.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.impl.MultiSinglePortMappingImpl

+		 * @see comrel.impl.ComrelPackageImpl#getMultiSinglePortMapping()

+		 * @generated

+		 */

+		EClass MULTI_SINGLE_PORT_MAPPING = eINSTANCE.getMultiSinglePortMapping();

+

+		/**

+		 * The meta object literal for the '<em><b>Source</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_SINGLE_PORT_MAPPING__SOURCE = eINSTANCE.getMultiSinglePortMapping_Source();

+

+		/**

+		 * The meta object literal for the '<em><b>Target</b></em>' reference feature.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @generated

+		 */

+		EReference MULTI_SINGLE_PORT_MAPPING__TARGET = eINSTANCE.getMultiSinglePortMapping_Target();

+

+		/**

+		 * The meta object literal for the '{@link comrel.MappingVisualization <em>Mapping Visualization</em>}' enum.

+		 * <!-- begin-user-doc -->

+		 * <!-- end-user-doc -->

+		 * @see comrel.MappingVisualization

+		 * @see comrel.impl.ComrelPackageImpl#getMappingVisualization()

+		 * @generated

+		 */

+		EEnum MAPPING_VISUALIZATION = eINSTANCE.getMappingVisualization();

+

+	}

+

+} //ComrelPackage

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/ConditionCheck.java b/org.eclipse.emf.refactor.comrel/src/comrel/ConditionCheck.java
new file mode 100644
index 0000000..684d02d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/ConditionCheck.java
@@ -0,0 +1,70 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Condition Check</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.ConditionCheck#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.ConditionCheck#getSpec <em>Spec</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getConditionCheck()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type,spec' label.pattern='{0}:{1} -{2}-'"

+ * @generated

+ */

+public interface ConditionCheck extends NamedElement, DescribedElement {

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Condition Check"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getConditionCheck_Type()

+	 * @model default="Condition Check" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+	/**

+	 * Returns the value of the '<em><b>Spec</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Spec</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Spec</em>' attribute.

+	 * @see #setSpec(String)

+	 * @see comrel.ComrelPackage#getConditionCheck_Spec()

+	 * @model

+	 * @generated

+	 */

+	String getSpec();

+

+	/**

+	 * Sets the value of the '{@link comrel.ConditionCheck#getSpec <em>Spec</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Spec</em>' attribute.

+	 * @see #getSpec()

+	 * @generated

+	 */

+	void setSpec(String value);

+

+} // ConditionCheck

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/ConditionalUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/ConditionalUnit.java
new file mode 100644
index 0000000..c636a13
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/ConditionalUnit.java
@@ -0,0 +1,164 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Conditional Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.ConditionalUnit#getIf <em>If</em>}</li>

+ *   <li>{@link comrel.ConditionalUnit#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.ConditionalUnit#getThen <em>Then</em>}</li>

+ *   <li>{@link comrel.ConditionalUnit#getElse <em>Else</em>}</li>

+ *   <li>{@link comrel.ConditionalUnit#getInputPorts <em>Input Ports</em>}</li>

+ *   <li>{@link comrel.ConditionalUnit#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getConditionalUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface ConditionalUnit extends CompositeUnit {

+	/**

+	 * Returns the value of the '<em><b>If</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>If</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>If</em>' containment reference.

+	 * @see #setIf(ConditionCheck)

+	 * @see comrel.ComrelPackage#getConditionalUnit_If()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	ConditionCheck getIf();

+

+	/**

+	 * Sets the value of the '{@link comrel.ConditionalUnit#getIf <em>If</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>If</em>' containment reference.

+	 * @see #getIf()

+	 * @generated

+	 */

+	void setIf(ConditionCheck value);

+

+	/**

+	 * Returns the value of the '<em><b>Helper Units</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.HelperUnit}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Units</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>Helper Units</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getConditionalUnit_HelperUnits()

+	 * @model containment="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	EList<HelperUnit> getHelperUnits();

+

+	/**

+	 * Returns the value of the '<em><b>Then</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Then</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Then</em>' containment reference.

+	 * @see #setThen(RefactoringUnit)

+	 * @see comrel.ComrelPackage#getConditionalUnit_Then()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	RefactoringUnit getThen();

+

+	/**

+	 * Sets the value of the '{@link comrel.ConditionalUnit#getThen <em>Then</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Then</em>' containment reference.

+	 * @see #getThen()

+	 * @generated

+	 */

+	void setThen(RefactoringUnit value);

+

+	/**

+	 * Returns the value of the '<em><b>Else</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Else</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Else</em>' containment reference.

+	 * @see #setElse(RefactoringUnit)

+	 * @see comrel.ComrelPackage#getConditionalUnit_Else()

+	 * @model containment="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	RefactoringUnit getElse();

+

+	/**

+	 * Sets the value of the '{@link comrel.ConditionalUnit#getElse <em>Else</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Else</em>' containment reference.

+	 * @see #getElse()

+	 * @generated

+	 */

+	void setElse(RefactoringUnit value);

+

+	/**

+	 * Returns the value of the '<em><b>Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.InputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Ports</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>Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getConditionalUnit_InputPorts()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<InputPort> getInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Conditional Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getConditionalUnit_Type()

+	 * @model default="Conditional Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+} // ConditionalUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/DescribedElement.java b/org.eclipse.emf.refactor.comrel/src/comrel/DescribedElement.java
new file mode 100644
index 0000000..06fa7de
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/DescribedElement.java
@@ -0,0 +1,54 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Described Element</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.DescribedElement#getDescription <em>Description</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getDescribedElement()

+ * @model interface="true" abstract="true"

+ * @generated

+ */

+public interface DescribedElement extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Description</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Description</em>' attribute.

+	 * @see #setDescription(String)

+	 * @see comrel.ComrelPackage#getDescribedElement_Description()

+	 * @model

+	 * @generated

+	 */

+	String getDescription();

+

+	/**

+	 * Sets the value of the '{@link comrel.DescribedElement#getDescription <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Description</em>' attribute.

+	 * @see #getDescription()

+	 * @generated

+	 */

+	void setDescription(String value);

+

+} // DescribedElement

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/FeatureHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/FeatureHelper.java
new file mode 100644
index 0000000..a84c31b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/FeatureHelper.java
@@ -0,0 +1,71 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Feature Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.FeatureHelper#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.FeatureHelper#getSecondaryInputPorts <em>Secondary Input Ports</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getFeatureHelper()

+ * @model abstract="true"

+ * @generated

+ */

+public interface FeatureHelper extends Helper {

+	/**

+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Input Port</em>' containment reference.

+	 * @see #setInputPort(SingleInputPort)

+	 * @see comrel.ComrelPackage#getFeatureHelper_InputPort()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	SingleInputPort getInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.FeatureHelper#getInputPort <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Input Port</em>' containment reference.

+	 * @see #getInputPort()

+	 * @generated

+	 */

+	void setInputPort(SingleInputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.MultiInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Secondary Input Ports</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>Secondary Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getFeatureHelper_SecondaryInputPorts()

+	 * @model containment="true"

+	 * @generated

+	 */

+	EList<MultiInputPort> getSecondaryInputPorts();

+

+} // FeatureHelper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/FeatureUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/FeatureUnit.java
new file mode 100644
index 0000000..75b62b6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/FeatureUnit.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Feature Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getFeatureUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface FeatureUnit extends HelperUnit {

+} // FeatureUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/FilterHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/FilterHelper.java
new file mode 100644
index 0000000..b2fced0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/FilterHelper.java
@@ -0,0 +1,53 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Filter Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.FilterHelper#getInputPort <em>Input Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getFilterHelper()

+ * @model abstract="true"

+ * @generated

+ */

+public interface FilterHelper extends Helper {

+	/**

+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Input Port</em>' containment reference.

+	 * @see #setInputPort(MultiInputPort)

+	 * @see comrel.ComrelPackage#getFilterHelper_InputPort()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	MultiInputPort getInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.FilterHelper#getInputPort <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Input Port</em>' containment reference.

+	 * @see #getInputPort()

+	 * @generated

+	 */

+	void setInputPort(MultiInputPort value);

+

+} // FilterHelper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/FilterUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/FilterUnit.java
new file mode 100644
index 0000000..6668cfd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/FilterUnit.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Filter Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getFilterUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface FilterUnit extends HelperUnit {

+} // FilterUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/Helper.java b/org.eclipse.emf.refactor.comrel/src/comrel/Helper.java
new file mode 100644
index 0000000..a6aad82
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/Helper.java
@@ -0,0 +1,80 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.Helper#getHelperId <em>Helper Id</em>}</li>

+ *   <li>{@link comrel.Helper#getNamespaceUri <em>Namespace Uri</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getHelper()

+ * @model abstract="true"

+ * @generated

+ */

+public interface Helper extends NamedElement, DescribedElement {

+	/**

+	 * Returns the value of the '<em><b>Helper Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Id</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Helper Id</em>' attribute.

+	 * @see #setHelperId(String)

+	 * @see comrel.ComrelPackage#getHelper_HelperId()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getHelperId();

+

+	/**

+	 * Sets the value of the '{@link comrel.Helper#getHelperId <em>Helper Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Helper Id</em>' attribute.

+	 * @see #getHelperId()

+	 * @generated

+	 */

+	void setHelperId(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Namespace Uri</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #setNamespaceUri(String)

+	 * @see comrel.ComrelPackage#getHelper_NamespaceUri()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getNamespaceUri();

+

+	/**

+	 * Sets the value of the '{@link comrel.Helper#getNamespaceUri <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #getNamespaceUri()

+	 * @generated

+	 */

+	void setNamespaceUri(String value);

+

+} // Helper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/HelperUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/HelperUnit.java
new file mode 100644
index 0000000..28b6e0c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/HelperUnit.java
@@ -0,0 +1,96 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Helper Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.HelperUnit#getHelperUnitId <em>Helper Unit Id</em>}</li>

+ *   <li>{@link comrel.HelperUnit#getNamespaceUri <em>Namespace Uri</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getHelperUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface HelperUnit extends NamedElement, DescribedElement {

+	/**

+	 * Returns the value of the '<em><b>Helper Unit Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Unit Id</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Helper Unit Id</em>' attribute.

+	 * @see #setHelperUnitId(String)

+	 * @see comrel.ComrelPackage#getHelperUnit_HelperUnitId()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getHelperUnitId();

+

+	/**

+	 * Sets the value of the '{@link comrel.HelperUnit#getHelperUnitId <em>Helper Unit Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Helper Unit Id</em>' attribute.

+	 * @see #getHelperUnitId()

+	 * @generated

+	 */

+	void setHelperUnitId(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Namespace Uri</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #setNamespaceUri(String)

+	 * @see comrel.ComrelPackage#getHelperUnit_NamespaceUri()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getNamespaceUri();

+

+	/**

+	 * Sets the value of the '{@link comrel.HelperUnit#getNamespaceUri <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #getNamespaceUri()

+	 * @generated

+	 */

+	void setNamespaceUri(String value);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation" required="true"

+	 * @generated

+	 */

+	InputPort getInputPort();

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation" required="true"

+	 * @generated

+	 */

+	OutputPort getOutputPort();

+

+} // HelperUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/InputPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/InputPort.java
new file mode 100644
index 0000000..e0eccc6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/InputPort.java
@@ -0,0 +1,38 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Input Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getInputPort()

+ * @model abstract="true"

+ *        annotation="gmf.node figure='rectangle' size='20,20'"

+ * @generated

+ */

+public interface InputPort extends Port {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation"

+	 * @generated

+	 */

+	Boolean isMappingTarget();

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation"

+	 * @generated

+	 */

+	Boolean isRootPort();

+

+} // InputPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MappingVisualization.java b/org.eclipse.emf.refactor.comrel/src/comrel/MappingVisualization.java
new file mode 100644
index 0000000..310beb0
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MappingVisualization.java
@@ -0,0 +1,293 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import java.util.Arrays;

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.emf.common.util.Enumerator;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the literals of the enumeration '<em><b>Mapping Visualization</b></em>',

+ * and utility methods for working with them.

+ * <!-- end-user-doc -->

+ * @see comrel.ComrelPackage#getMappingVisualization()

+ * @model

+ * @generated

+ */

+public enum MappingVisualization implements Enumerator {

+	/**

+	 * The '<em><b>Arrows</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #ARROWS_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	ARROWS(0, "arrows", "arrows"),

+

+	/**

+	 * The '<em><b>Colored Ports</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #COLORED_PORTS_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	COLORED_PORTS(1, "coloredPorts", "coloredPorts"),

+

+	/**

+	 * The '<em><b>Indices</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #INDICES_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	INDICES(2, "indices", "indices"),

+

+	/**

+	 * The '<em><b>Arrows And Colored Ports</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #ARROWS_AND_COLORED_PORTS_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	ARROWS_AND_COLORED_PORTS(3, "arrowsAndColoredPorts", "arrowsAndColoredPorts"),

+

+	/**

+	 * The '<em><b>Arrows And Indices</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #ARROWS_AND_INDICES_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	ARROWS_AND_INDICES(4, "arrowsAndIndices", "arrowsAndIndices");

+

+	/**

+	 * The '<em><b>Arrows</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>Arrows</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #ARROWS

+	 * @model name="arrows"

+	 * @generated

+	 * @ordered

+	 */

+	public static final int ARROWS_VALUE = 0;

+

+	/**

+	 * The '<em><b>Colored Ports</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>Colored Ports</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #COLORED_PORTS

+	 * @model name="coloredPorts"

+	 * @generated

+	 * @ordered

+	 */

+	public static final int COLORED_PORTS_VALUE = 1;

+

+	/**

+	 * The '<em><b>Indices</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>Indices</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #INDICES

+	 * @model name="indices"

+	 * @generated

+	 * @ordered

+	 */

+	public static final int INDICES_VALUE = 2;

+

+	/**

+	 * The '<em><b>Arrows And Colored Ports</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>Arrows And Colored Ports</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #ARROWS_AND_COLORED_PORTS

+	 * @model name="arrowsAndColoredPorts"

+	 * @generated

+	 * @ordered

+	 */

+	public static final int ARROWS_AND_COLORED_PORTS_VALUE = 3;

+

+	/**

+	 * The '<em><b>Arrows And Indices</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>Arrows And Indices</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #ARROWS_AND_INDICES

+	 * @model name="arrowsAndIndices"

+	 * @generated

+	 * @ordered

+	 */

+	public static final int ARROWS_AND_INDICES_VALUE = 4;

+

+	/**

+	 * An array of all the '<em><b>Mapping Visualization</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static final MappingVisualization[] VALUES_ARRAY =

+		new MappingVisualization[] {

+			ARROWS,

+			COLORED_PORTS,

+			INDICES,

+			ARROWS_AND_COLORED_PORTS,

+			ARROWS_AND_INDICES,

+		};

+

+	/**

+	 * A public read-only list of all the '<em><b>Mapping Visualization</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final List<MappingVisualization> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));

+

+	/**

+	 * Returns the '<em><b>Mapping Visualization</b></em>' literal with the specified literal value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static MappingVisualization get(String literal) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			MappingVisualization result = VALUES_ARRAY[i];

+			if (result.toString().equals(literal)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>Mapping Visualization</b></em>' literal with the specified name.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static MappingVisualization getByName(String name) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			MappingVisualization result = VALUES_ARRAY[i];

+			if (result.getName().equals(name)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>Mapping Visualization</b></em>' literal with the specified integer value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static MappingVisualization get(int value) {

+		switch (value) {

+			case ARROWS_VALUE: return ARROWS;

+			case COLORED_PORTS_VALUE: return COLORED_PORTS;

+			case INDICES_VALUE: return INDICES;

+			case ARROWS_AND_COLORED_PORTS_VALUE: return ARROWS_AND_COLORED_PORTS;

+			case ARROWS_AND_INDICES_VALUE: return ARROWS_AND_INDICES;

+		}

+		return null;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private final int value;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private final String name;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private final String literal;

+

+	/**

+	 * Only this class can construct instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private MappingVisualization(int value, String name, String literal) {

+		this.value = value;

+		this.name = name;

+		this.literal = literal;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getValue() {

+	  return value;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+	  return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLiteral() {

+	  return literal;

+	}

+

+	/**

+	 * Returns the literal value of the enumerator, which is its string representation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		return literal;

+	}

+	

+} //MappingVisualization

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/ModelRefactoring.java b/org.eclipse.emf.refactor.comrel/src/comrel/ModelRefactoring.java
new file mode 100644
index 0000000..8492806
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/ModelRefactoring.java
@@ -0,0 +1,125 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Model Refactoring</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.ModelRefactoring#getRefId <em>Ref Id</em>}</li>

+ *   <li>{@link comrel.ModelRefactoring#getLabel <em>Label</em>}</li>

+ *   <li>{@link comrel.ModelRefactoring#getNamespaceUri <em>Namespace Uri</em>}</li>

+ *   <li>{@link comrel.ModelRefactoring#getInputPorts <em>Input Ports</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getModelRefactoring()

+ * @model

+ * @generated

+ */

+public interface ModelRefactoring extends NamedElement, DescribedElement {

+	/**

+	 * Returns the value of the '<em><b>Ref Id</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Ref Id</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Ref Id</em>' attribute.

+	 * @see #setRefId(String)

+	 * @see comrel.ComrelPackage#getModelRefactoring_RefId()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getRefId();

+

+	/**

+	 * Sets the value of the '{@link comrel.ModelRefactoring#getRefId <em>Ref Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Ref Id</em>' attribute.

+	 * @see #getRefId()

+	 * @generated

+	 */

+	void setRefId(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Label</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Label</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Label</em>' attribute.

+	 * @see #setLabel(String)

+	 * @see comrel.ComrelPackage#getModelRefactoring_Label()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getLabel();

+

+	/**

+	 * Sets the value of the '{@link comrel.ModelRefactoring#getLabel <em>Label</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Label</em>' attribute.

+	 * @see #getLabel()

+	 * @generated

+	 */

+	void setLabel(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Namespace Uri</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Namespace Uri</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #setNamespaceUri(String)

+	 * @see comrel.ComrelPackage#getModelRefactoring_NamespaceUri()

+	 * @model required="true"

+	 * @generated

+	 */

+	String getNamespaceUri();

+

+	/**

+	 * Sets the value of the '{@link comrel.ModelRefactoring#getNamespaceUri <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Namespace Uri</em>' attribute.

+	 * @see #getNamespaceUri()

+	 * @generated

+	 */

+	void setNamespaceUri(String value);

+

+	/**

+	 * Returns the value of the '<em><b>Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.SingleInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Ports</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>Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getModelRefactoring_InputPorts()

+	 * @model containment="true"

+	 * @generated

+	 */

+	EList<SingleInputPort> getInputPorts();

+

+} // ModelRefactoring

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiFeatureHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFeatureHelper.java
new file mode 100644
index 0000000..2529700
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFeatureHelper.java
@@ -0,0 +1,53 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Feature Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiFeatureHelper#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiFeatureHelper()

+ * @model

+ * @generated

+ */

+public interface MultiFeatureHelper extends FeatureHelper {

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(MultiOutputPort)

+	 * @see comrel.ComrelPackage#getMultiFeatureHelper_OutputPort()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	MultiOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFeatureHelper#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(MultiOutputPort value);

+

+} // MultiFeatureHelper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiFeatureUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFeatureUnit.java
new file mode 100644
index 0000000..e2cbc04
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFeatureUnit.java
@@ -0,0 +1,145 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Feature Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiFeatureUnit#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.MultiFeatureUnit#getSecondaryInputPorts <em>Secondary Input Ports</em>}</li>

+ *   <li>{@link comrel.MultiFeatureUnit#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.MultiFeatureUnit#getMultiFeatureHelper <em>Multi Feature Helper</em>}</li>

+ *   <li>{@link comrel.MultiFeatureUnit#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiFeatureUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface MultiFeatureUnit extends FeatureUnit {

+	/**

+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Input Port</em>' containment reference.

+	 * @see #setInputPort(SingleInputPort)

+	 * @see comrel.ComrelPackage#getMultiFeatureUnit_InputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	SingleInputPort getInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFeatureUnit#getInputPort <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Input Port</em>' containment reference.

+	 * @see #getInputPort()

+	 * @generated

+	 */

+	void setInputPort(SingleInputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.MultiInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Secondary Input Ports</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>Secondary Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getMultiFeatureUnit_SecondaryInputPorts()

+	 * @model containment="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<MultiInputPort> getSecondaryInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(MultiOutputPort)

+	 * @see comrel.ComrelPackage#getMultiFeatureUnit_OutputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	MultiOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFeatureUnit#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(MultiOutputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Multi Feature Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Multi Feature Helper</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Multi Feature Helper</em>' reference.

+	 * @see #setMultiFeatureHelper(MultiFeatureHelper)

+	 * @see comrel.ComrelPackage#getMultiFeatureUnit_MultiFeatureHelper()

+	 * @model required="true"

+	 * @generated

+	 */

+	MultiFeatureHelper getMultiFeatureHelper();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFeatureUnit#getMultiFeatureHelper <em>Multi Feature Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Multi Feature Helper</em>' reference.

+	 * @see #getMultiFeatureHelper()

+	 * @generated

+	 */

+	void setMultiFeatureHelper(MultiFeatureHelper value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Multi Feature Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getMultiFeatureUnit_Type()

+	 * @model default="Multi Feature Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+} // MultiFeatureUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiFilterHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFilterHelper.java
new file mode 100644
index 0000000..529c413
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFilterHelper.java
@@ -0,0 +1,53 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Filter Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiFilterHelper#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiFilterHelper()

+ * @model

+ * @generated

+ */

+public interface MultiFilterHelper extends FilterHelper {

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(MultiOutputPort)

+	 * @see comrel.ComrelPackage#getMultiFilterHelper_OutputPort()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	MultiOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFilterHelper#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(MultiOutputPort value);

+

+} // MultiFilterHelper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiFilterUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFilterUnit.java
new file mode 100644
index 0000000..fa05693
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiFilterUnit.java
@@ -0,0 +1,126 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Filter Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiFilterUnit#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.MultiFilterUnit#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.MultiFilterUnit#getMultiFilterHelper <em>Multi Filter Helper</em>}</li>

+ *   <li>{@link comrel.MultiFilterUnit#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiFilterUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface MultiFilterUnit extends FilterUnit {

+	/**

+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Input Port</em>' containment reference.

+	 * @see #setInputPort(MultiInputPort)

+	 * @see comrel.ComrelPackage#getMultiFilterUnit_InputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	MultiInputPort getInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFilterUnit#getInputPort <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Input Port</em>' containment reference.

+	 * @see #getInputPort()

+	 * @generated

+	 */

+	void setInputPort(MultiInputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(MultiOutputPort)

+	 * @see comrel.ComrelPackage#getMultiFilterUnit_OutputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	MultiOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFilterUnit#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(MultiOutputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Multi Filter Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Multi Filter Helper</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Multi Filter Helper</em>' reference.

+	 * @see #setMultiFilterHelper(MultiFilterHelper)

+	 * @see comrel.ComrelPackage#getMultiFilterUnit_MultiFilterHelper()

+	 * @model required="true"

+	 * @generated

+	 */

+	MultiFilterHelper getMultiFilterHelper();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiFilterUnit#getMultiFilterHelper <em>Multi Filter Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Multi Filter Helper</em>' reference.

+	 * @see #getMultiFilterHelper()

+	 * @generated

+	 */

+	void setMultiFilterHelper(MultiFilterHelper value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Multi Filter Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getMultiFilterUnit_Type()

+	 * @model default="Multi Filter Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+} // MultiFilterUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiInputPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiInputPort.java
new file mode 100644
index 0000000..2571752
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiInputPort.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Input Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getMultiInputPort()

+ * @model

+ * @generated

+ */

+public interface MultiInputPort extends MultiPort, InputPort {

+} // MultiInputPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiOutputPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiOutputPort.java
new file mode 100644
index 0000000..8418eae
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiOutputPort.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Output Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getMultiOutputPort()

+ * @model

+ * @generated

+ */

+public interface MultiOutputPort extends MultiPort, OutputPort {

+} // MultiOutputPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiPort.java
new file mode 100644
index 0000000..7974762
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiPort.java
@@ -0,0 +1,45 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiPort#getValue <em>Value</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiPort()

+ * @model abstract="true"

+ *        annotation="gmf.node border.color='255,0,0' border.width='10'"

+ * @generated

+ */

+public interface MultiPort extends Port {

+	/**

+	 * Returns the value of the '<em><b>Value</b></em>' attribute list.

+	 * The list contents are of type {@link java.lang.Object}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Value</em>' attribute list isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Value</em>' attribute list.

+	 * @see comrel.ComrelPackage#getMultiPort_Value()

+	 * @model

+	 * @generated

+	 */

+	EList<Object> getValue();

+

+} // MultiPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiPortMapping.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiPortMapping.java
new file mode 100644
index 0000000..787c6bc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiPortMapping.java
@@ -0,0 +1,80 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiPortMapping#getSource <em>Source</em>}</li>

+ *   <li>{@link comrel.MultiPortMapping#getTarget <em>Target</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiPortMapping()

+ * @model annotation="gmf.link source='source' target='target' style='dot' width='2' target.decoration='arrow'"

+ * @generated

+ */

+public interface MultiPortMapping extends PortMapping {

+	/**

+	 * Returns the value of the '<em><b>Source</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Source</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Source</em>' reference.

+	 * @see #setSource(MultiPort)

+	 * @see comrel.ComrelPackage#getMultiPortMapping_Source()

+	 * @model

+	 * @generated

+	 */

+	MultiPort getSource();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiPortMapping#getSource <em>Source</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Source</em>' reference.

+	 * @see #getSource()

+	 * @generated

+	 */

+	void setSource(MultiPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Target</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Target</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Target</em>' reference.

+	 * @see #setTarget(MultiInputPort)

+	 * @see comrel.ComrelPackage#getMultiPortMapping_Target()

+	 * @model

+	 * @generated

+	 */

+	MultiInputPort getTarget();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiPortMapping#getTarget <em>Target</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Target</em>' reference.

+	 * @see #getTarget()

+	 * @generated

+	 */

+	void setTarget(MultiInputPort value);

+

+} // MultiPortMapping

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/MultiSinglePortMapping.java b/org.eclipse.emf.refactor.comrel/src/comrel/MultiSinglePortMapping.java
new file mode 100644
index 0000000..bd5e947
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/MultiSinglePortMapping.java
@@ -0,0 +1,80 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Multi Single Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.MultiSinglePortMapping#getSource <em>Source</em>}</li>

+ *   <li>{@link comrel.MultiSinglePortMapping#getTarget <em>Target</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getMultiSinglePortMapping()

+ * @model annotation="gmf.link source='source' target='target' style='dot' width='2' target.decoration='arrow' tool.small.bundle='name'"

+ * @generated

+ */

+public interface MultiSinglePortMapping extends PortMapping {

+	/**

+	 * Returns the value of the '<em><b>Source</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Source</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Source</em>' reference.

+	 * @see #setSource(MultiPort)

+	 * @see comrel.ComrelPackage#getMultiSinglePortMapping_Source()

+	 * @model

+	 * @generated

+	 */

+	MultiPort getSource();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiSinglePortMapping#getSource <em>Source</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Source</em>' reference.

+	 * @see #getSource()

+	 * @generated

+	 */

+	void setSource(MultiPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Target</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Target</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Target</em>' reference.

+	 * @see #setTarget(SingleInputPort)

+	 * @see comrel.ComrelPackage#getMultiSinglePortMapping_Target()

+	 * @model

+	 * @generated

+	 */

+	SingleInputPort getTarget();

+

+	/**

+	 * Sets the value of the '{@link comrel.MultiSinglePortMapping#getTarget <em>Target</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Target</em>' reference.

+	 * @see #getTarget()

+	 * @generated

+	 */

+	void setTarget(SingleInputPort value);

+

+} // MultiSinglePortMapping

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/NamedElement.java b/org.eclipse.emf.refactor.comrel/src/comrel/NamedElement.java
new file mode 100644
index 0000000..3cc2930
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/NamedElement.java
@@ -0,0 +1,54 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Named Element</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.NamedElement#getName <em>Name</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getNamedElement()

+ * @model interface="true" abstract="true"

+ * @generated

+ */

+public interface NamedElement extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Name</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Name</em>' attribute.

+	 * @see #setName(String)

+	 * @see comrel.ComrelPackage#getNamedElement_Name()

+	 * @model

+	 * @generated

+	 */

+	String getName();

+

+	/**

+	 * Sets the value of the '{@link comrel.NamedElement#getName <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Name</em>' attribute.

+	 * @see #getName()

+	 * @generated

+	 */

+	void setName(String value);

+

+} // NamedElement

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/OutputPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/OutputPort.java
new file mode 100644
index 0000000..75f3963
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/OutputPort.java
@@ -0,0 +1,22 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Output Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getOutputPort()

+ * @model abstract="true"

+ *        annotation="gmf.node figure='ellipse' size='20,20'"

+ * @generated

+ */

+public interface OutputPort extends Port {

+} // OutputPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/ParallelQueuedUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/ParallelQueuedUnit.java
new file mode 100644
index 0000000..d0dd202
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/ParallelQueuedUnit.java
@@ -0,0 +1,154 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Parallel Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.ParallelQueuedUnit#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.ParallelQueuedUnit#getRefactoringUnits <em>Refactoring Units</em>}</li>

+ *   <li>{@link comrel.ParallelQueuedUnit#getSingleInputPorts <em>Single Input Ports</em>}</li>

+ *   <li>{@link comrel.ParallelQueuedUnit#getMultiInputPorts <em>Multi Input Ports</em>}</li>

+ *   <li>{@link comrel.ParallelQueuedUnit#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.ParallelQueuedUnit#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getParallelQueuedUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type,lblStrict' label.pattern='{0}:{1} -{2}-'"

+ * @generated

+ */

+public interface ParallelQueuedUnit extends TwicedQueuedUnit {

+	/**

+	 * Returns the value of the '<em><b>Helper Units</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.HelperUnit}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Units</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>Helper Units</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getParallelQueuedUnit_HelperUnits()

+	 * @model containment="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	EList<HelperUnit> getHelperUnits();

+

+	/**

+	 * Returns the value of the '<em><b>Refactoring Units</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Refactoring Units</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Refactoring Units</em>' containment reference.

+	 * @see #setRefactoringUnits(RefactoringUnit)

+	 * @see comrel.ComrelPackage#getParallelQueuedUnit_RefactoringUnits()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	RefactoringUnit getRefactoringUnits();

+

+	/**

+	 * Sets the value of the '{@link comrel.ParallelQueuedUnit#getRefactoringUnits <em>Refactoring Units</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Refactoring Units</em>' containment reference.

+	 * @see #getRefactoringUnits()

+	 * @generated

+	 */

+	void setRefactoringUnits(RefactoringUnit value);

+

+	/**

+	 * Returns the value of the '<em><b>Single Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.SingleInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Single Input Ports</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>Single Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getParallelQueuedUnit_SingleInputPorts()

+	 * @model containment="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<SingleInputPort> getSingleInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Multi Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.MultiInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Multi Input Ports</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>Multi Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getParallelQueuedUnit_MultiInputPorts()

+	 * @model containment="true" lower="2" upper="2"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<MultiInputPort> getMultiInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Parallel Queued Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getParallelQueuedUnit_Type()

+	 * @model default="Parallel Queued Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+	/**

+	 * Returns the value of the '<em><b>Lbl Strict</b></em>' attribute.

+	 * The default value is <code>"strict"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Lbl Strict</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #setLblStrict(String)

+	 * @see comrel.ComrelPackage#getParallelQueuedUnit_LblStrict()

+	 * @model default="strict"

+	 * @generated

+	 */

+	String getLblStrict();

+

+	/**

+	 * Sets the value of the '{@link comrel.ParallelQueuedUnit#getLblStrict <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #getLblStrict()

+	 * @generated

+	 */

+	void setLblStrict(String value);

+

+} // ParallelQueuedUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/Port.java b/org.eclipse.emf.refactor.comrel/src/comrel/Port.java
new file mode 100644
index 0000000..c7074cc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/Port.java
@@ -0,0 +1,84 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.draw2d.Shape;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.Port#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getPort()

+ * @model abstract="true"

+ *        annotation="gmf.node foo='bar' label='name,type' label.icon='false' label.placement='external' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface Port extends NamedElement, DescribedElement {

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see #setType(Class)

+	 * @see comrel.ComrelPackage#getPort_Type()

+	 * @model required="true"

+	 * @generated

+	 */

+	Class getType();

+

+	/**

+	 * Sets the value of the '{@link comrel.Port#getType <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Type</em>' attribute.

+	 * @see #getType()

+	 * @generated

+	 */

+	void setType(Class value);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void setType(Class newType, boolean initiator);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void updatePortName(String singularPortName);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation"

+	 * @generated

+	 */

+	String getSingularPortName();

+	

+	public Shape getFigure();

+

+	public void setFigure(Shape figure);

+

+} // Port

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/PortMapping.java b/org.eclipse.emf.refactor.comrel/src/comrel/PortMapping.java
new file mode 100644
index 0000000..fab80d9
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/PortMapping.java
@@ -0,0 +1,76 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.ecore.EObject;

+

+import comrel.figures.PortMappingFigure;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getPortMapping()

+ * @model abstract="true"

+ * @generated

+ */

+public interface PortMapping extends EObject {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation"

+	 * @generated

+	 */

+	Port getSource();

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation"

+	 * @generated

+	 */

+	InputPort getTarget();

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void updatePortTypesAndNames(Class type, String singularPortName);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void updateMappingNumber();

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void updateVisualization();

+	

+	public void setMappingNumber(int mappingNumber);

+

+	public int getMappingNumber();

+	

+	public void setFigure(PortMappingFigure figure);

+

+	public PortMappingFigure getFigure();

+	

+	public boolean isVisible();

+

+	public void setVisible(boolean visible);

+

+} // PortMapping

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/QueuedUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/QueuedUnit.java
new file mode 100644
index 0000000..25d3713
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/QueuedUnit.java
@@ -0,0 +1,62 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.QueuedUnit#isStrict <em>Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getQueuedUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface QueuedUnit extends CompositeUnit {

+	/**

+	 * Returns the value of the '<em><b>Strict</b></em>' attribute.

+	 * The default value is <code>"true"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Strict</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Strict</em>' attribute.

+	 * @see #setStrict(boolean)

+	 * @see comrel.ComrelPackage#getQueuedUnit_Strict()

+	 * @model default="true"

+	 * @generated

+	 */

+	boolean isStrict();

+

+	/**

+	 * Sets the value of the '{@link comrel.QueuedUnit#isStrict <em>Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Strict</em>' attribute.

+	 * @see #isStrict()

+	 * @generated

+	 */

+	void setStrict(boolean value);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void init();

+

+} // QueuedUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/RefactoringUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/RefactoringUnit.java
new file mode 100644
index 0000000..d6ebd24
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/RefactoringUnit.java
@@ -0,0 +1,83 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Refactoring Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.RefactoringUnit#getSeqExecutionOrder <em>Seq Execution Order</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getRefactoringUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface RefactoringUnit extends NamedElement {

+	/**

+	 * Returns the value of the '<em><b>Seq Execution Order</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Seq Execution Order</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Seq Execution Order</em>' attribute.

+	 * @see #setSeqExecutionOrder(int)

+	 * @see comrel.ComrelPackage#getRefactoringUnit_SeqExecutionOrder()

+	 * @model

+	 * @generated

+	 */

+	int getSeqExecutionOrder();

+

+	/**

+	 * Sets the value of the '{@link comrel.RefactoringUnit#getSeqExecutionOrder <em>Seq Execution Order</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Seq Execution Order</em>' attribute.

+	 * @see #getSeqExecutionOrder()

+	 * @generated

+	 */

+	void setSeqExecutionOrder(int value);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model kind="operation"

+	 * @generated

+	 */

+	EList<InputPort> getAllInputPorts();

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void setSeqExecutionOrder(int seqExecutionOrder, boolean superCall);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void setName(String newName, boolean updateContainer);

+	

+	public RoundedRectangle getFigure();

+

+	public void setFigure(RoundedRectangle figure);

+

+} // RefactoringUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SequentialUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/SequentialUnit.java
new file mode 100644
index 0000000..5045daa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SequentialUnit.java
@@ -0,0 +1,162 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Sequential Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SequentialUnit#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.SequentialUnit#getRefactoringUnits <em>Refactoring Units</em>}</li>

+ *   <li>{@link comrel.SequentialUnit#getInputPorts <em>Input Ports</em>}</li>

+ *   <li>{@link comrel.SequentialUnit#isStrict <em>Strict</em>}</li>

+ *   <li>{@link comrel.SequentialUnit#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.SequentialUnit#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSequentialUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type,lblStrict' label.pattern='{0}:{1} -{2}-'"

+ * @generated

+ */

+public interface SequentialUnit extends CompositeUnit {

+	/**

+	 * Returns the value of the '<em><b>Helper Units</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.HelperUnit}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Units</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>Helper Units</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getSequentialUnit_HelperUnits()

+	 * @model containment="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	EList<HelperUnit> getHelperUnits();

+

+	/**

+	 * Returns the value of the '<em><b>Refactoring Units</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.RefactoringUnit}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Refactoring Units</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>Refactoring Units</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getSequentialUnit_RefactoringUnits()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	EList<RefactoringUnit> getRefactoringUnits();

+

+	/**

+	 * Returns the value of the '<em><b>Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.InputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Ports</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>Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getSequentialUnit_InputPorts()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<InputPort> getInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Strict</b></em>' attribute.

+	 * The default value is <code>"true"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Strict</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Strict</em>' attribute.

+	 * @see #setStrict(boolean)

+	 * @see comrel.ComrelPackage#getSequentialUnit_Strict()

+	 * @model default="true"

+	 * @generated

+	 */

+	boolean isStrict();

+

+	/**

+	 * Sets the value of the '{@link comrel.SequentialUnit#isStrict <em>Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Strict</em>' attribute.

+	 * @see #isStrict()

+	 * @generated

+	 */

+	void setStrict(boolean value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Sequential Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getSequentialUnit_Type()

+	 * @model default="Sequential Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+	/**

+	 * Returns the value of the '<em><b>Lbl Strict</b></em>' attribute.

+	 * The default value is <code>"strict"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Lbl Strict</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #setLblStrict(String)

+	 * @see comrel.ComrelPackage#getSequentialUnit_LblStrict()

+	 * @model default="strict"

+	 * @generated

+	 */

+	String getLblStrict();

+

+	/**

+	 * Sets the value of the '{@link comrel.SequentialUnit#getLblStrict <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #getLblStrict()

+	 * @generated

+	 */

+	void setLblStrict(String value);

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @model

+	 * @generated

+	 */

+	void updateSeqExecutionOrder();

+

+} // SequentialUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleFeatureHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFeatureHelper.java
new file mode 100644
index 0000000..50dc0ba
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFeatureHelper.java
@@ -0,0 +1,53 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Feature Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SingleFeatureHelper#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSingleFeatureHelper()

+ * @model

+ * @generated

+ */

+public interface SingleFeatureHelper extends FeatureHelper {

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(SingleOutputPort)

+	 * @see comrel.ComrelPackage#getSingleFeatureHelper_OutputPort()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	SingleOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFeatureHelper#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(SingleOutputPort value);

+

+} // SingleFeatureHelper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleFeatureUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFeatureUnit.java
new file mode 100644
index 0000000..2120e32
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFeatureUnit.java
@@ -0,0 +1,145 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Feature Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SingleFeatureUnit#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.SingleFeatureUnit#getSecondaryInputPorts <em>Secondary Input Ports</em>}</li>

+ *   <li>{@link comrel.SingleFeatureUnit#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.SingleFeatureUnit#getSingleFeatureHelper <em>Single Feature Helper</em>}</li>

+ *   <li>{@link comrel.SingleFeatureUnit#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSingleFeatureUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface SingleFeatureUnit extends FeatureUnit {

+	/**

+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Input Port</em>' containment reference.

+	 * @see #setInputPort(SingleInputPort)

+	 * @see comrel.ComrelPackage#getSingleFeatureUnit_InputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	SingleInputPort getInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFeatureUnit#getInputPort <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Input Port</em>' containment reference.

+	 * @see #getInputPort()

+	 * @generated

+	 */

+	void setInputPort(SingleInputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Secondary Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.MultiInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Secondary Input Ports</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>Secondary Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getSingleFeatureUnit_SecondaryInputPorts()

+	 * @model containment="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<MultiInputPort> getSecondaryInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(SingleOutputPort)

+	 * @see comrel.ComrelPackage#getSingleFeatureUnit_OutputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	SingleOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFeatureUnit#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(SingleOutputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Single Feature Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Single Feature Helper</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Single Feature Helper</em>' reference.

+	 * @see #setSingleFeatureHelper(SingleFeatureHelper)

+	 * @see comrel.ComrelPackage#getSingleFeatureUnit_SingleFeatureHelper()

+	 * @model required="true"

+	 * @generated

+	 */

+	SingleFeatureHelper getSingleFeatureHelper();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFeatureUnit#getSingleFeatureHelper <em>Single Feature Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Single Feature Helper</em>' reference.

+	 * @see #getSingleFeatureHelper()

+	 * @generated

+	 */

+	void setSingleFeatureHelper(SingleFeatureHelper value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Single Feature Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getSingleFeatureUnit_Type()

+	 * @model default="Single Feature Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+} // SingleFeatureUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleFilterHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFilterHelper.java
new file mode 100644
index 0000000..4d00901
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFilterHelper.java
@@ -0,0 +1,53 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Filter Helper</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SingleFilterHelper#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSingleFilterHelper()

+ * @model

+ * @generated

+ */

+public interface SingleFilterHelper extends FilterHelper {

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(SingleOutputPort)

+	 * @see comrel.ComrelPackage#getSingleFilterHelper_OutputPort()

+	 * @model containment="true" required="true"

+	 * @generated

+	 */

+	SingleOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFilterHelper#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(SingleOutputPort value);

+

+} // SingleFilterHelper

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleFilterUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFilterUnit.java
new file mode 100644
index 0000000..d5ed827
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleFilterUnit.java
@@ -0,0 +1,126 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Filter Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SingleFilterUnit#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.SingleFilterUnit#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.SingleFilterUnit#getSingleFilterHelper <em>Single Filter Helper</em>}</li>

+ *   <li>{@link comrel.SingleFilterUnit#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSingleFilterUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type' label.pattern='{0}:{1}'"

+ * @generated

+ */

+public interface SingleFilterUnit extends FilterUnit {

+	/**

+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Input Port</em>' containment reference.

+	 * @see #setInputPort(MultiInputPort)

+	 * @see comrel.ComrelPackage#getSingleFilterUnit_InputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	MultiInputPort getInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFilterUnit#getInputPort <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Input Port</em>' containment reference.

+	 * @see #getInputPort()

+	 * @generated

+	 */

+	void setInputPort(MultiInputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Output Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Output Port</em>' containment reference.

+	 * @see #setOutputPort(SingleOutputPort)

+	 * @see comrel.ComrelPackage#getSingleFilterUnit_OutputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	SingleOutputPort getOutputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFilterUnit#getOutputPort <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Output Port</em>' containment reference.

+	 * @see #getOutputPort()

+	 * @generated

+	 */

+	void setOutputPort(SingleOutputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Single Filter Helper</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Single Filter Helper</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Single Filter Helper</em>' reference.

+	 * @see #setSingleFilterHelper(SingleFilterHelper)

+	 * @see comrel.ComrelPackage#getSingleFilterUnit_SingleFilterHelper()

+	 * @model required="true"

+	 * @generated

+	 */

+	SingleFilterHelper getSingleFilterHelper();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleFilterUnit#getSingleFilterHelper <em>Single Filter Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Single Filter Helper</em>' reference.

+	 * @see #getSingleFilterHelper()

+	 * @generated

+	 */

+	void setSingleFilterHelper(SingleFilterHelper value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Single Filter Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getSingleFilterUnit_Type()

+	 * @model default="Single Filter Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+} // SingleFilterUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleInputPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleInputPort.java
new file mode 100644
index 0000000..f508f57
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleInputPort.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Input Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getSingleInputPort()

+ * @model

+ * @generated

+ */

+public interface SingleInputPort extends SinglePort, InputPort {

+} // SingleInputPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleOutputPort.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleOutputPort.java
new file mode 100644
index 0000000..accf552
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleOutputPort.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Output Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getSingleOutputPort()

+ * @model

+ * @generated

+ */

+public interface SingleOutputPort extends SinglePort, OutputPort {

+} // SingleOutputPort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SinglePort.java b/org.eclipse.emf.refactor.comrel/src/comrel/SinglePort.java
new file mode 100644
index 0000000..e3ccbd3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SinglePort.java
@@ -0,0 +1,53 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Port</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SinglePort#getValue <em>Value</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSinglePort()

+ * @model abstract="true"

+ * @generated

+ */

+public interface SinglePort extends Port {

+	/**

+	 * Returns the value of the '<em><b>Value</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Value</em>' attribute.

+	 * @see #setValue(Object)

+	 * @see comrel.ComrelPackage#getSinglePort_Value()

+	 * @model

+	 * @generated

+	 */

+	Object getValue();

+

+	/**

+	 * Sets the value of the '{@link comrel.SinglePort#getValue <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Value</em>' attribute.

+	 * @see #getValue()

+	 * @generated

+	 */

+	void setValue(Object value);

+

+} // SinglePort

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SinglePortMapping.java b/org.eclipse.emf.refactor.comrel/src/comrel/SinglePortMapping.java
new file mode 100644
index 0000000..46490ce
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SinglePortMapping.java
@@ -0,0 +1,80 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SinglePortMapping#getSource <em>Source</em>}</li>

+ *   <li>{@link comrel.SinglePortMapping#getTarget <em>Target</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSinglePortMapping()

+ * @model annotation="gmf.link source='source' target='target' style='dot' width='2' target.decoration='arrow'"

+ * @generated

+ */

+public interface SinglePortMapping extends PortMapping {

+	/**

+	 * Returns the value of the '<em><b>Source</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Source</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Source</em>' reference.

+	 * @see #setSource(SinglePort)

+	 * @see comrel.ComrelPackage#getSinglePortMapping_Source()

+	 * @model

+	 * @generated

+	 */

+	SinglePort getSource();

+

+	/**

+	 * Sets the value of the '{@link comrel.SinglePortMapping#getSource <em>Source</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Source</em>' reference.

+	 * @see #getSource()

+	 * @generated

+	 */

+	void setSource(SinglePort value);

+

+	/**

+	 * Returns the value of the '<em><b>Target</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Target</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Target</em>' reference.

+	 * @see #setTarget(SingleInputPort)

+	 * @see comrel.ComrelPackage#getSinglePortMapping_Target()

+	 * @model

+	 * @generated

+	 */

+	SingleInputPort getTarget();

+

+	/**

+	 * Sets the value of the '{@link comrel.SinglePortMapping#getTarget <em>Target</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Target</em>' reference.

+	 * @see #getTarget()

+	 * @generated

+	 */

+	void setTarget(SingleInputPort value);

+

+} // SinglePortMapping

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/SingleQueuedUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/SingleQueuedUnit.java
new file mode 100644
index 0000000..7b1428d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/SingleQueuedUnit.java
@@ -0,0 +1,164 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Single Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link comrel.SingleQueuedUnit#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.SingleQueuedUnit#getRefactoringUnit <em>Refactoring Unit</em>}</li>

+ *   <li>{@link comrel.SingleQueuedUnit#getSingleInputPorts <em>Single Input Ports</em>}</li>

+ *   <li>{@link comrel.SingleQueuedUnit#getMultiInputPort <em>Multi Input Port</em>}</li>

+ *   <li>{@link comrel.SingleQueuedUnit#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.SingleQueuedUnit#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see comrel.ComrelPackage#getSingleQueuedUnit()

+ * @model annotation="gmf.node foo='bar' label.icon='false' label='name,type,lblStrict' label.pattern='{0}:{1} -{2}-'"

+ * @generated

+ */

+public interface SingleQueuedUnit extends QueuedUnit {

+	/**

+	 * Returns the value of the '<em><b>Helper Units</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.HelperUnit}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Helper Units</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>Helper Units</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getSingleQueuedUnit_HelperUnits()

+	 * @model containment="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	EList<HelperUnit> getHelperUnits();

+

+	/**

+	 * Returns the value of the '<em><b>Refactoring Unit</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Refactoring Unit</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Refactoring Unit</em>' containment reference.

+	 * @see #setRefactoringUnit(RefactoringUnit)

+	 * @see comrel.ComrelPackage#getSingleQueuedUnit_RefactoringUnit()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.compartment foo='bar'"

+	 * @generated

+	 */

+	RefactoringUnit getRefactoringUnit();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleQueuedUnit#getRefactoringUnit <em>Refactoring Unit</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Refactoring Unit</em>' containment reference.

+	 * @see #getRefactoringUnit()

+	 * @generated

+	 */

+	void setRefactoringUnit(RefactoringUnit value);

+

+	/**

+	 * Returns the value of the '<em><b>Single Input Ports</b></em>' containment reference list.

+	 * The list contents are of type {@link comrel.SingleInputPort}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Single Input Ports</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>Single Input Ports</em>' containment reference list.

+	 * @see comrel.ComrelPackage#getSingleQueuedUnit_SingleInputPorts()

+	 * @model containment="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	EList<SingleInputPort> getSingleInputPorts();

+

+	/**

+	 * Returns the value of the '<em><b>Multi Input Port</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Multi Input Port</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Multi Input Port</em>' containment reference.

+	 * @see #setMultiInputPort(MultiInputPort)

+	 * @see comrel.ComrelPackage#getSingleQueuedUnit_MultiInputPort()

+	 * @model containment="true" required="true"

+	 *        annotation="gmf.affixed foo='bar'"

+	 * @generated

+	 */

+	MultiInputPort getMultiInputPort();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleQueuedUnit#getMultiInputPort <em>Multi Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Multi Input Port</em>' containment reference.

+	 * @see #getMultiInputPort()

+	 * @generated

+	 */

+	void setMultiInputPort(MultiInputPort value);

+

+	/**

+	 * Returns the value of the '<em><b>Type</b></em>' attribute.

+	 * The default value is <code>"Single Queued Unit"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Type</em>' attribute.

+	 * @see comrel.ComrelPackage#getSingleQueuedUnit_Type()

+	 * @model default="Single Queued Unit" changeable="false"

+	 * @generated

+	 */

+	String getType();

+

+	/**

+	 * Returns the value of the '<em><b>Lbl Strict</b></em>' attribute.

+	 * The default value is <code>"strict"</code>.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Lbl Strict</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #setLblStrict(String)

+	 * @see comrel.ComrelPackage#getSingleQueuedUnit_LblStrict()

+	 * @model default="strict"

+	 * @generated

+	 */

+	String getLblStrict();

+

+	/**

+	 * Sets the value of the '{@link comrel.SingleQueuedUnit#getLblStrict <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Lbl Strict</em>' attribute.

+	 * @see #getLblStrict()

+	 * @generated

+	 */

+	void setLblStrict(String value);

+

+} // SingleQueuedUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/TwicedQueuedUnit.java b/org.eclipse.emf.refactor.comrel/src/comrel/TwicedQueuedUnit.java
new file mode 100644
index 0000000..856f948
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/TwicedQueuedUnit.java
@@ -0,0 +1,21 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel;

+

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Twiced Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ *

+ * @see comrel.ComrelPackage#getTwicedQueuedUnit()

+ * @model abstract="true"

+ * @generated

+ */

+public interface TwicedQueuedUnit extends QueuedUnit {

+} // TwicedQueuedUnit

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/extensions/IMultiFeatureHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/IMultiFeatureHelper.java
new file mode 100644
index 0000000..c2ebe7e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/IMultiFeatureHelper.java
@@ -0,0 +1,23 @@
+/**

+ * 

+ */

+package comrel.extensions;

+

+import comrel.MultiOutputPort;

+import comrel.SingleInputPort;

+

+/**

+ * @author arendt

+ *

+ */

+public interface IMultiFeatureHelper {

+	

+	

+	

+	public SingleInputPort getInputPort();

+	

+	public MultiOutputPort getOutputPort();

+	

+	public void run();

+

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/extensions/IMultiFilterHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/IMultiFilterHelper.java
new file mode 100644
index 0000000..693027c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/IMultiFilterHelper.java
@@ -0,0 +1,21 @@
+/**

+ * 

+ */

+package comrel.extensions;

+

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+

+/**

+ * @author arendt

+ *

+ */

+public interface IMultiFilterHelper {

+	

+	public MultiInputPort getInputPort();

+	

+	public MultiOutputPort getOutputPort();

+	

+	public void run();

+

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/extensions/ISingleFeatureHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/ISingleFeatureHelper.java
new file mode 100644
index 0000000..341412f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/ISingleFeatureHelper.java
@@ -0,0 +1,21 @@
+/**

+ * 

+ */

+package comrel.extensions;

+

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+

+/**

+ * @author arendt

+ *

+ */

+public interface ISingleFeatureHelper {

+	

+	public SingleInputPort getInputPort();

+	

+	public SingleOutputPort getOutputPort();

+	

+	public void run();

+

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/extensions/ISingleFilterHelper.java b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/ISingleFilterHelper.java
new file mode 100644
index 0000000..87c30db
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/extensions/ISingleFilterHelper.java
@@ -0,0 +1,21 @@
+/**

+ * 

+ */

+package comrel.extensions;

+

+import comrel.MultiInputPort;

+import comrel.SingleOutputPort;

+

+/**

+ * @author arendt

+ *

+ */

+public interface ISingleFilterHelper {

+	

+	public MultiInputPort getInputPort();

+	

+	public SingleOutputPort getOutputPort();

+	

+	public void run();

+	

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/figures/InputPortFigure.java b/org.eclipse.emf.refactor.comrel/src/comrel/figures/InputPortFigure.java
new file mode 100644
index 0000000..3a7e84a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/figures/InputPortFigure.java
@@ -0,0 +1,63 @@
+package comrel.figures;

+

+

+

+import org.eclipse.draw2d.Label;

+import org.eclipse.draw2d.RectangleFigure;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.graphics.Font;

+import org.eclipse.swt.graphics.FontData;

+

+import comrel.InputPort;

+

+public abstract class InputPortFigure extends RectangleFigure {

+

+	private InputPort port;

+	private Label portLabel=null;

+

+	public InputPort getPort() {

+		return port;

+	}

+

+	public void setPort(InputPort port) {

+		this.port = port;

+		this.port.setFigure(this);

+//		updateFigure();

+	}

+	

+	public void setLabel(String text){

+		if(portLabel == null) {

+			portLabel = new Label();

+			portLabel.setSize(this.getMinimumSize());

+			this.removeAll();

+			FontData fd = new FontData();

+			fd.setHeight(5);

+			fd.setStyle(SWT.NORMAL);

+			Font f = new Font(null, fd);		

+			portLabel.setFont(f);

+			this.add(portLabel);

+		}

+		portLabel.setVisible(true);

+		portLabel.setEnabled(true);

+		portLabel.setText(text);

+	}

+	

+	public Label getLabel() {

+		return portLabel;

+	}

+

+	public void updateFigure() {

+		if (port != null) {

+			String name = port.getName();

+			Class type = port.getType();

+			String typeName = "";

+			if(name == null) {

+				name = "";

+			}

+			if (type != null) {

+				typeName = type.getSimpleName();

+			}

+			setLabel(name + ":" + typeName);

+		}

+	}	

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/figures/OutputPortFigure.java b/org.eclipse.emf.refactor.comrel/src/comrel/figures/OutputPortFigure.java
new file mode 100644
index 0000000..c8e4a49
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/figures/OutputPortFigure.java
@@ -0,0 +1,63 @@
+package comrel.figures;

+

+import org.eclipse.draw2d.Ellipse;

+import org.eclipse.draw2d.Label;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.graphics.Font;

+import org.eclipse.swt.graphics.FontData;

+

+import comrel.OutputPort;

+

+public abstract class OutputPortFigure extends Ellipse{

+	private OutputPort port;

+	private Label portLabel;

+

+	public OutputPort getPort() {

+		return port;

+	}

+

+	

+	public void setPort(OutputPort port) {

+		this.port = port;

+		this.port.setFigure(this);

+		updateFigure();

+	}

+	

+	public void setLabel(String text){

+		if(portLabel == null) {

+			portLabel = new Label();

+			portLabel.setSize(this.getMinimumSize());

+			this.removeAll();

+			FontData fd = new FontData();

+			fd.setHeight(5);

+			fd.setStyle(SWT.NORMAL);

+			Font f = new Font(null, fd);

+		

+			portLabel.setFont(f);

+			this.add(portLabel);

+		}

+		portLabel.setVisible(true);

+		portLabel.setEnabled(true);

+		portLabel.setText(text);

+	}

+	

+	public Label getLabel() {

+		return portLabel;

+	}

+

+

+	public void updateFigure() {

+		if (port != null) {

+			String name = port.getName();

+			Class type = port.getType();

+			String typeName = "";

+			if(name == null) {

+				name = "";

+			}

+			if (type != null) {

+				typeName = type.getSimpleName();

+			}

+			setLabel(name + ":" + typeName);

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/figures/PortMappingFigure.java b/org.eclipse.emf.refactor.comrel/src/comrel/figures/PortMappingFigure.java
new file mode 100644
index 0000000..6ff2daf
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/figures/PortMappingFigure.java
@@ -0,0 +1,21 @@
+package comrel.figures;

+

+

+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;

+

+import comrel.PortMapping;

+

+public class PortMappingFigure extends PolylineConnectionEx {

+

+	PortMapping mapping;

+

+	public PortMapping getMapping() {

+		return mapping;

+	}

+

+	public void setMapping(PortMapping mapping) {

+		this.mapping = mapping;

+		mapping.setFigure(this);

+	}	

+

+}
\ No newline at end of file
diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/AtomicUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/AtomicUnitImpl.java
new file mode 100644
index 0000000..626f68c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/AtomicUnitImpl.java
@@ -0,0 +1,580 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.AtomicUnit;

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.InputPort;

+import comrel.ModelRefactoring;

+import comrel.SingleInputPort;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Atomic Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#getInputPorts <em>Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#getUnitId <em>Unit Id</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#getLabel <em>Label</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#getNamespaceUri <em>Namespace Uri</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#getModelRefactoring <em>Model Refactoring</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#isCheckInitialConditionFlag <em>Check Initial Condition Flag</em>}</li>

+ *   <li>{@link comrel.impl.AtomicUnitImpl#isCheckFinalConditionFlag <em>Check Final Condition Flag</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class AtomicUnitImpl extends RefactoringUnitImpl implements AtomicUnit {

+	/**

+	 * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<SingleInputPort> inputPorts;

+

+	/**

+	 * The default value of the '{@link #getUnitId() <em>Unit Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUnitId()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String UNIT_ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getUnitId() <em>Unit Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUnitId()

+	 * @generated

+	 * @ordered

+	 */

+	protected String unitId = UNIT_ID_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLabel()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LABEL_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLabel()

+	 * @generated

+	 * @ordered

+	 */

+	protected String label = LABEL_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAMESPACE_URI_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected String namespaceUri = NAMESPACE_URI_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Atomic Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getModelRefactoring() <em>Model Refactoring</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getModelRefactoring()

+	 * @generated

+	 * @ordered

+	 */

+	protected ModelRefactoring modelRefactoring;

+

+	/**

+	 * The default value of the '{@link #isCheckInitialConditionFlag() <em>Check Initial Condition Flag</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isCheckInitialConditionFlag()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean CHECK_INITIAL_CONDITION_FLAG_EDEFAULT = false;

+

+	/**

+	 * The cached value of the '{@link #isCheckInitialConditionFlag() <em>Check Initial Condition Flag</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isCheckInitialConditionFlag()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean checkInitialConditionFlag = CHECK_INITIAL_CONDITION_FLAG_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #isCheckFinalConditionFlag() <em>Check Final Condition Flag</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isCheckFinalConditionFlag()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean CHECK_FINAL_CONDITION_FLAG_EDEFAULT = false;

+

+	/**

+	 * The cached value of the '{@link #isCheckFinalConditionFlag() <em>Check Final Condition Flag</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isCheckFinalConditionFlag()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean checkFinalConditionFlag = CHECK_FINAL_CONDITION_FLAG_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected AtomicUnitImpl() {

+		super();

+	}

+

+	public AtomicUnitImpl(ModelRefactoring refactoring) {

+		super();

+		System.out.println("Konstruktor: AtomicUnitImpl(ModelRefactoring refactoring)");

+		ComrelFactory factory = ComrelFactory.eINSTANCE;

+

+		this.modelRefactoring = refactoring;

+		System.out.println("modelRefactoring: " + modelRefactoring);

+		this.unitId = new String(refactoring.getRefId());

+		this.name = new String(refactoring.getName());

+		this.label = new String(refactoring.getName());

+		this.namespaceUri = refactoring.getNamespaceUri();

+		SingleInputPort tempPort;

+

+		for(SingleInputPort inPort : refactoring.getInputPorts()){

+			tempPort = factory.createSingleInputPort();

+			tempPort.setDescription(inPort.getDescription());

+			tempPort.setName(inPort.getName());

+			tempPort.setType(inPort.getType());

+

+			this.getInputPorts().add(tempPort);

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.ATOMIC_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<SingleInputPort> getInputPorts() {

+		if (inputPorts == null) {

+			inputPorts = new EObjectContainmentEList<SingleInputPort>(SingleInputPort.class, this, ComrelPackage.ATOMIC_UNIT__INPUT_PORTS);

+		}

+		return inputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getUnitId() {

+		return unitId;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setUnitId(String newUnitId) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldUnitId = unitId;

+			unitId = newUnitId;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.ATOMIC_UNIT__UNIT_ID, oldUnitId, unitId));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLabel() {

+		return label;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLabel(String newLabel) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldLabel = label;

+			label = newLabel;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.ATOMIC_UNIT__LABEL, oldLabel, label));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getNamespaceUri() {

+		return namespaceUri;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setNamespaceUri(String newNamespaceUri) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldNamespaceUri = namespaceUri;

+			namespaceUri = newNamespaceUri;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.ATOMIC_UNIT__NAMESPACE_URI, oldNamespaceUri, namespaceUri));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ModelRefactoring getModelRefactoring() {

+		if (modelRefactoring != null && modelRefactoring.eIsProxy()) {

+			InternalEObject oldModelRefactoring = (InternalEObject)modelRefactoring;

+			modelRefactoring = (ModelRefactoring)eResolveProxy(oldModelRefactoring);

+			if (modelRefactoring != oldModelRefactoring) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.ATOMIC_UNIT__MODEL_REFACTORING, oldModelRefactoring, modelRefactoring));

+			}

+		}

+		return modelRefactoring;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ModelRefactoring basicGetModelRefactoring() {

+		return modelRefactoring;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setModelRefactoring(ModelRefactoring newModelRefactoring) {

+//		System.out.println("begin AtomicUnit::setModelRefactoring(ModelRefactoring newModelRefactoring)");

+//		System.out.println("vorher: " + this.getModelRefactoring());

+//		System.out.println("zu setzen: " + newModelRefactoring);

+		if (ComrelUtil.objectIsSettable(this) || modelRefactoring == null){

+			ModelRefactoring oldModelRefactoring = modelRefactoring;

+			modelRefactoring = newModelRefactoring;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.ATOMIC_UNIT__MODEL_REFACTORING, oldModelRefactoring, modelRefactoring));

+		}

+//		System.out.println("nachher: " + this.getModelRefactoring());

+//		System.out.println("ende AtomicUnit::setModelRefactoring(ModelRefactoring newModelRefactoring)");

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean isCheckInitialConditionFlag() {

+		return checkInitialConditionFlag;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setCheckInitialConditionFlag(boolean newCheckInitialConditionFlag) {

+		boolean oldCheckInitialConditionFlag = checkInitialConditionFlag;

+		checkInitialConditionFlag = newCheckInitialConditionFlag;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG, oldCheckInitialConditionFlag, checkInitialConditionFlag));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean isCheckFinalConditionFlag() {

+		return checkFinalConditionFlag;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setCheckFinalConditionFlag(boolean newCheckFinalConditionFlag) {

+		boolean oldCheckFinalConditionFlag = checkFinalConditionFlag;

+		checkFinalConditionFlag = newCheckFinalConditionFlag;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG, oldCheckFinalConditionFlag, checkFinalConditionFlag));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.ATOMIC_UNIT__INPUT_PORTS:

+				return ((InternalEList<?>)getInputPorts()).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 ComrelPackage.ATOMIC_UNIT__INPUT_PORTS:

+				return getInputPorts();

+			case ComrelPackage.ATOMIC_UNIT__UNIT_ID:

+				return getUnitId();

+			case ComrelPackage.ATOMIC_UNIT__LABEL:

+				return getLabel();

+			case ComrelPackage.ATOMIC_UNIT__NAMESPACE_URI:

+				return getNamespaceUri();

+			case ComrelPackage.ATOMIC_UNIT__TYPE:

+				return getType();

+			case ComrelPackage.ATOMIC_UNIT__MODEL_REFACTORING:

+				if (resolve) return getModelRefactoring();

+				return basicGetModelRefactoring();

+			case ComrelPackage.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG:

+				return isCheckInitialConditionFlag();

+			case ComrelPackage.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG:

+				return isCheckFinalConditionFlag();

+		}

+		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 ComrelPackage.ATOMIC_UNIT__INPUT_PORTS:

+				getInputPorts().clear();

+				getInputPorts().addAll((Collection<? extends SingleInputPort>)newValue);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__UNIT_ID:

+				setUnitId((String)newValue);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__LABEL:

+				setLabel((String)newValue);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__NAMESPACE_URI:

+				setNamespaceUri((String)newValue);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__MODEL_REFACTORING:

+				setModelRefactoring((ModelRefactoring)newValue);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG:

+				setCheckInitialConditionFlag((Boolean)newValue);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG:

+				setCheckFinalConditionFlag((Boolean)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.ATOMIC_UNIT__INPUT_PORTS:

+				getInputPorts().clear();

+				return;

+			case ComrelPackage.ATOMIC_UNIT__UNIT_ID:

+				setUnitId(UNIT_ID_EDEFAULT);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__LABEL:

+				setLabel(LABEL_EDEFAULT);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__NAMESPACE_URI:

+				setNamespaceUri(NAMESPACE_URI_EDEFAULT);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__MODEL_REFACTORING:

+				setModelRefactoring((ModelRefactoring)null);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG:

+				setCheckInitialConditionFlag(CHECK_INITIAL_CONDITION_FLAG_EDEFAULT);

+				return;

+			case ComrelPackage.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG:

+				setCheckFinalConditionFlag(CHECK_FINAL_CONDITION_FLAG_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.ATOMIC_UNIT__INPUT_PORTS:

+				return inputPorts != null && !inputPorts.isEmpty();

+			case ComrelPackage.ATOMIC_UNIT__UNIT_ID:

+				return UNIT_ID_EDEFAULT == null ? unitId != null : !UNIT_ID_EDEFAULT.equals(unitId);

+			case ComrelPackage.ATOMIC_UNIT__LABEL:

+				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);

+			case ComrelPackage.ATOMIC_UNIT__NAMESPACE_URI:

+				return NAMESPACE_URI_EDEFAULT == null ? namespaceUri != null : !NAMESPACE_URI_EDEFAULT.equals(namespaceUri);

+			case ComrelPackage.ATOMIC_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+			case ComrelPackage.ATOMIC_UNIT__MODEL_REFACTORING:

+				return modelRefactoring != null;

+			case ComrelPackage.ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG:

+				return checkInitialConditionFlag != CHECK_INITIAL_CONDITION_FLAG_EDEFAULT;

+			case ComrelPackage.ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG:

+				return checkFinalConditionFlag != CHECK_FINAL_CONDITION_FLAG_EDEFAULT;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (unitId: ");

+		result.append(unitId);

+		result.append(", label: ");

+		result.append(label);

+		result.append(", namespaceUri: ");

+		result.append(namespaceUri);

+		result.append(", type: ");

+		result.append(type);

+		result.append(", checkInitialConditionFlag: ");

+		result.append(checkInitialConditionFlag);

+		result.append(", checkFinalConditionFlag: ");

+		result.append(checkFinalConditionFlag);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public EList<InputPort> getAllInputPorts() {

+		EList<InputPort> result = new BasicEList<InputPort>();

+		result.addAll(this.getInputPorts());

+		return result;

+	}

+

+} //AtomicUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/CartesianQueuedUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/CartesianQueuedUnitImpl.java
new file mode 100644
index 0000000..2785562
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/CartesianQueuedUnitImpl.java
@@ -0,0 +1,423 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.CartesianQueuedUnit;

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MultiInputPort;

+import comrel.RefactoringUnit;

+import comrel.SingleInputPort;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Cartesian Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.CartesianQueuedUnitImpl#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.impl.CartesianQueuedUnitImpl#getRefactoringUnit <em>Refactoring Unit</em>}</li>

+ *   <li>{@link comrel.impl.CartesianQueuedUnitImpl#getSingleInputPorts <em>Single Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.CartesianQueuedUnitImpl#getMultiInputPorts <em>Multi Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.CartesianQueuedUnitImpl#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.impl.CartesianQueuedUnitImpl#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class CartesianQueuedUnitImpl extends TwicedQueuedUnitImpl implements CartesianQueuedUnit {

+	/**

+	 * The cached value of the '{@link #getHelperUnits() <em>Helper Units</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<HelperUnit> helperUnits;

+

+	/**

+	 * The cached value of the '{@link #getRefactoringUnit() <em>Refactoring Unit</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getRefactoringUnit()

+	 * @generated

+	 * @ordered

+	 */

+	protected RefactoringUnit refactoringUnit;

+

+	/**

+	 * The cached value of the '{@link #getSingleInputPorts() <em>Single Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSingleInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<SingleInputPort> singleInputPorts;

+

+	/**

+	 * The cached value of the '{@link #getMultiInputPorts() <em>Multi Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMultiInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<MultiInputPort> multiInputPorts;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Cartesian Queued Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LBL_STRICT_EDEFAULT = "strict";

+

+	/**

+	 * The cached value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected String lblStrict = LBL_STRICT_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CartesianQueuedUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.CARTESIAN_QUEUED_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<HelperUnit> getHelperUnits() {

+		if (helperUnits == null) {

+			helperUnits = new EObjectContainmentEList<HelperUnit>(HelperUnit.class, this, ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS);

+		}

+		return helperUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnit getRefactoringUnit() {

+		return refactoringUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetRefactoringUnit(RefactoringUnit newRefactoringUnit, NotificationChain msgs) {

+		RefactoringUnit oldRefactoringUnit = refactoringUnit;

+		refactoringUnit = newRefactoringUnit;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT, oldRefactoringUnit, newRefactoringUnit);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setRefactoringUnit(RefactoringUnit newRefactoringUnit) {

+		if (newRefactoringUnit != refactoringUnit) {

+			NotificationChain msgs = null;

+			if (refactoringUnit != null)

+				msgs = ((InternalEObject)refactoringUnit).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT, null, msgs);

+			if (newRefactoringUnit != null)

+				msgs = ((InternalEObject)newRefactoringUnit).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT, null, msgs);

+			msgs = basicSetRefactoringUnit(newRefactoringUnit, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT, newRefactoringUnit, newRefactoringUnit));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<SingleInputPort> getSingleInputPorts() {

+		if (singleInputPorts == null) {

+			singleInputPorts = new EObjectContainmentEList<SingleInputPort>(SingleInputPort.class, this, ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+		}

+		return singleInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<MultiInputPort> getMultiInputPorts() {

+		if (multiInputPorts == null) {

+			multiInputPorts = new EObjectContainmentEList<MultiInputPort>(MultiInputPort.class, this, ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS);

+		}

+		return multiInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLblStrict() {

+		return lblStrict;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLblStrict(String newLblStrict) {

+		String oldLblStrict = lblStrict;

+		lblStrict = newLblStrict;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CARTESIAN_QUEUED_UNIT__LBL_STRICT, oldLblStrict, lblStrict));

+	}

+	

+	@Override

+	public void setStrict(boolean newStrict) {

+		super.setStrict(newStrict);

+		if (newStrict) setLblStrict("strict");

+		else setLblStrict("non strict");

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS:

+				return ((InternalEList<?>)getHelperUnits()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT:

+				return basicSetRefactoringUnit(null, msgs);

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return ((InternalEList<?>)getSingleInputPorts()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				return ((InternalEList<?>)getMultiInputPorts()).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 ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS:

+				return getHelperUnits();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT:

+				return getRefactoringUnit();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return getSingleInputPorts();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				return getMultiInputPorts();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__TYPE:

+				return getType();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__LBL_STRICT:

+				return getLblStrict();

+		}

+		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 ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				getHelperUnits().addAll((Collection<? extends HelperUnit>)newValue);

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT:

+				setRefactoringUnit((RefactoringUnit)newValue);

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				getSingleInputPorts().clear();

+				getSingleInputPorts().addAll((Collection<? extends SingleInputPort>)newValue);

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				getMultiInputPorts().clear();

+				getMultiInputPorts().addAll((Collection<? extends MultiInputPort>)newValue);

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__LBL_STRICT:

+				setLblStrict((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT:

+				setRefactoringUnit((RefactoringUnit)null);

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				getSingleInputPorts().clear();

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				getMultiInputPorts().clear();

+				return;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__LBL_STRICT:

+				setLblStrict(LBL_STRICT_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__HELPER_UNITS:

+				return helperUnits != null && !helperUnits.isEmpty();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT:

+				return refactoringUnit != null;

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return singleInputPorts != null && !singleInputPorts.isEmpty();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				return multiInputPorts != null && !multiInputPorts.isEmpty();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT__LBL_STRICT:

+				return LBL_STRICT_EDEFAULT == null ? lblStrict != null : !LBL_STRICT_EDEFAULT.equals(lblStrict);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(", lblStrict: ");

+		result.append(lblStrict);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public void init(){

+		ComrelFactory factory = ComrelFactory.eINSTANCE;

+		MultiInputPort one = factory.createMultiInputPort();

+		MultiInputPort two = factory.createMultiInputPort();

+		this.getMultiInputPorts().add(one);

+		this.getMultiInputPorts().add(two);

+	}

+	

+	public EList<InputPort> getAllInputPorts() {

+		EList<InputPort> inputPorts = new BasicEList<InputPort>();

+		inputPorts.addAll(this.getSingleInputPorts());

+		inputPorts.addAll(this.getMultiInputPorts());

+		return inputPorts;

+	}

+

+} //CartesianQueuedUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/CompositeRefactoringImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/CompositeRefactoringImpl.java
new file mode 100644
index 0000000..13178c4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/CompositeRefactoringImpl.java
@@ -0,0 +1,829 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

+import java.util.List;

+import java.util.Set;

+import java.util.Stack;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.AtomicUnit;

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.CompositeUnit;

+import comrel.ComrelPackage;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.MappingVisualization;

+import comrel.ModelRefactoring;

+import comrel.MultiFeatureHelper;

+import comrel.MultiFilterHelper;

+import comrel.ParallelQueuedUnit;

+import comrel.PortMapping;

+import comrel.RefactoringUnit;

+import comrel.SequentialUnit;

+import comrel.SingleFeatureHelper;

+import comrel.SingleFilterHelper;

+import comrel.SingleQueuedUnit;

+import comrel.util.RegistryUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Composite Refactoring</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getMainRefactoringUnit <em>Main Refactoring Unit</em>}</li>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getPortMappings <em>Port Mappings</em>}</li>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getModelRefactorings <em>Model Refactorings</em>}</li>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getHelper <em>Helper</em>}</li>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getMappingVisualization <em>Mapping Visualization</em>}</li>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getCustomInitialCondition <em>Custom Initial Condition</em>}</li>

+ *   <li>{@link comrel.impl.CompositeRefactoringImpl#getCustomFinalCondition <em>Custom Final Condition</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class CompositeRefactoringImpl extends ModelRefactoringImpl implements CompositeRefactoring {

+	

+	public Set<Integer> mappingNumbers = new HashSet<Integer>();

+

+	public static String nsUri = "";

+	

+	/**

+	 * The cached value of the '{@link #getMainRefactoringUnit() <em>Main Refactoring Unit</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMainRefactoringUnit()

+	 * @generated

+	 * @ordered

+	 */

+	protected RefactoringUnit mainRefactoringUnit;

+

+	/**

+	 * The cached value of the '{@link #getPortMappings() <em>Port Mappings</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getPortMappings()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<PortMapping> portMappings;

+

+	/**

+	 * The cached value of the '{@link #getModelRefactorings() <em>Model Refactorings</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getModelRefactorings()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<ModelRefactoring> modelRefactorings;

+

+	/**

+	 * The cached value of the '{@link #getHelper() <em>Helper</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelper()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<Helper> helper;

+

+	/**

+	 * The default value of the '{@link #getMappingVisualization() <em>Mapping Visualization</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMappingVisualization()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final MappingVisualization MAPPING_VISUALIZATION_EDEFAULT = MappingVisualization.ARROWS;

+

+	/**

+	 * The cached value of the '{@link #getMappingVisualization() <em>Mapping Visualization</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMappingVisualization()

+	 * @generated

+	 * @ordered

+	 */

+	protected MappingVisualization mappingVisualization = MAPPING_VISUALIZATION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getCustomInitialCondition() <em>Custom Initial Condition</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getCustomInitialCondition()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String CUSTOM_INITIAL_CONDITION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getCustomInitialCondition() <em>Custom Initial Condition</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getCustomInitialCondition()

+	 * @generated

+	 * @ordered

+	 */

+	protected String customInitialCondition = CUSTOM_INITIAL_CONDITION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getCustomFinalCondition() <em>Custom Final Condition</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getCustomFinalCondition()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String CUSTOM_FINAL_CONDITION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getCustomFinalCondition() <em>Custom Final Condition</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getCustomFinalCondition()

+	 * @generated

+	 * @ordered

+	 */

+	protected String customFinalCondition = CUSTOM_FINAL_CONDITION_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CompositeRefactoringImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.COMPOSITE_REFACTORING;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnit getMainRefactoringUnit() {

+		return mainRefactoringUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetMainRefactoringUnit(RefactoringUnit newMainRefactoringUnit, NotificationChain msgs) {

+		RefactoringUnit oldMainRefactoringUnit = mainRefactoringUnit;

+		mainRefactoringUnit = newMainRefactoringUnit;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT, oldMainRefactoringUnit, newMainRefactoringUnit);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		if (this.getMainRefactoringUnit() != null) {

+			this.getMainRefactoringUnit().setName(this.getName(), false);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setMainRefactoringUnit(RefactoringUnit newMainRefactoringUnit) {

+		if (newMainRefactoringUnit != mainRefactoringUnit) {

+			NotificationChain msgs = null;

+			if (mainRefactoringUnit != null)

+				msgs = ((InternalEObject)mainRefactoringUnit).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT, null, msgs);

+			if (newMainRefactoringUnit != null)

+				msgs = ((InternalEObject)newMainRefactoringUnit).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT, null, msgs);

+			msgs = basicSetMainRefactoringUnit(newMainRefactoringUnit, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT, newMainRefactoringUnit, newMainRefactoringUnit));

+		if (this.getMainRefactoringUnit() != null) {

+			this.getMainRefactoringUnit().setName(this.getName(), false);

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<PortMapping> getPortMappings() {

+		if (portMappings == null) {

+			portMappings = new EObjectContainmentEList<PortMapping>(PortMapping.class, this, ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS);

+		}

+		return portMappings;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<ModelRefactoring> getModelRefactorings() {

+		if (modelRefactorings == null) {

+			modelRefactorings = new EObjectContainmentEList<ModelRefactoring>(ModelRefactoring.class, this, ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS);

+		}

+		return modelRefactorings;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<Helper> getHelper() {

+		if (helper == null) {

+			helper = new EObjectContainmentEList<Helper>(Helper.class, this, ComrelPackage.COMPOSITE_REFACTORING__HELPER);

+		}

+		return helper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MappingVisualization getMappingVisualization() {

+		return mappingVisualization;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setMappingVisualization(MappingVisualization newMappingVisualization) {

+		MappingVisualization oldMappingVisualization = mappingVisualization;

+		mappingVisualization = newMappingVisualization == null ? MAPPING_VISUALIZATION_EDEFAULT : newMappingVisualization;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION, oldMappingVisualization, mappingVisualization));

+		for (PortMapping mapping : this.getPortMappings()) {

+			mapping.updateVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getCustomInitialCondition() {

+		return customInitialCondition;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setCustomInitialCondition(String newCustomInitialCondition) {

+		String oldCustomInitialCondition = customInitialCondition;

+		customInitialCondition = newCustomInitialCondition;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION, oldCustomInitialCondition, customInitialCondition));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getCustomFinalCondition() {

+		return customFinalCondition;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setCustomFinalCondition(String newCustomFinalCondition) {

+		String oldCustomFinalCondition = customFinalCondition;

+		customFinalCondition = newCustomFinalCondition;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION, oldCustomFinalCondition, customFinalCondition));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT:

+				return basicSetMainRefactoringUnit(null, msgs);

+			case ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS:

+				return ((InternalEList<?>)getPortMappings()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS:

+				return ((InternalEList<?>)getModelRefactorings()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.COMPOSITE_REFACTORING__HELPER:

+				return ((InternalEList<?>)getHelper()).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 ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT:

+				return getMainRefactoringUnit();

+			case ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS:

+				return getPortMappings();

+			case ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS:

+				return getModelRefactorings();

+			case ComrelPackage.COMPOSITE_REFACTORING__HELPER:

+				return getHelper();

+			case ComrelPackage.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION:

+				return getMappingVisualization();

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION:

+				return getCustomInitialCondition();

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION:

+				return getCustomFinalCondition();

+		}

+		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 ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT:

+				setMainRefactoringUnit((RefactoringUnit)newValue);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS:

+				getPortMappings().clear();

+				getPortMappings().addAll((Collection<? extends PortMapping>)newValue);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS:

+				getModelRefactorings().clear();

+				getModelRefactorings().addAll((Collection<? extends ModelRefactoring>)newValue);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__HELPER:

+				getHelper().clear();

+				getHelper().addAll((Collection<? extends Helper>)newValue);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION:

+				setMappingVisualization((MappingVisualization)newValue);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION:

+				setCustomInitialCondition((String)newValue);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION:

+				setCustomFinalCondition((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT:

+				setMainRefactoringUnit((RefactoringUnit)null);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS:

+				getPortMappings().clear();

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS:

+				getModelRefactorings().clear();

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__HELPER:

+				getHelper().clear();

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION:

+				setMappingVisualization(MAPPING_VISUALIZATION_EDEFAULT);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION:

+				setCustomInitialCondition(CUSTOM_INITIAL_CONDITION_EDEFAULT);

+				return;

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION:

+				setCustomFinalCondition(CUSTOM_FINAL_CONDITION_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT:

+				return mainRefactoringUnit != null;

+			case ComrelPackage.COMPOSITE_REFACTORING__PORT_MAPPINGS:

+				return portMappings != null && !portMappings.isEmpty();

+			case ComrelPackage.COMPOSITE_REFACTORING__MODEL_REFACTORINGS:

+				return modelRefactorings != null && !modelRefactorings.isEmpty();

+			case ComrelPackage.COMPOSITE_REFACTORING__HELPER:

+				return helper != null && !helper.isEmpty();

+			case ComrelPackage.COMPOSITE_REFACTORING__MAPPING_VISUALIZATION:

+				return mappingVisualization != MAPPING_VISUALIZATION_EDEFAULT;

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION:

+				return CUSTOM_INITIAL_CONDITION_EDEFAULT == null ? customInitialCondition != null : !CUSTOM_INITIAL_CONDITION_EDEFAULT.equals(customInitialCondition);

+			case ComrelPackage.COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION:

+				return CUSTOM_FINAL_CONDITION_EDEFAULT == null ? customFinalCondition != null : !CUSTOM_FINAL_CONDITION_EDEFAULT.equals(customFinalCondition);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (mappingVisualization: ");

+		result.append(mappingVisualization);

+		result.append(", customInitialCondition: ");

+		result.append(customInitialCondition);

+		result.append(", customFinalCondition: ");

+		result.append(customFinalCondition);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public void setName(String newName) {

+		this.setName(newName, true);

+	}

+

+	public void setName(String newName, boolean updateRootUnit) {

+		String oldName = name;

+		name = newName;

+		if (updateRootUnit) {

+			if (this.getMainRefactoringUnit() != null) {

+				this.getMainRefactoringUnit().setName(newName, false);

+			}

+		}

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET,

+					ComrelPackage.COMPOSITE_REFACTORING__NAME, oldName,

+					name));

+

+	}

+	

+	public void setNamespaceUri(String newNamespaceUri) {

+		if (namespaceUri == null) {

+			String oldNamespaceUri = namespaceUri;

+			namespaceUri = newNamespaceUri;

+			nsUri = namespaceUri;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(

+						this,

+						Notification.SET,

+						ComrelPackage.COMPOSITE_REFACTORING__NAMESPACE_URI,

+						oldNamespaceUri, namespaceUri));

+		}

+	}

+	

+	/**

+	 * @param id

+	 * @return ModelRefactoring oder null, falls nicht existent

+	 */

+	public ModelRefactoring getModelRefactoring(String id) {

+		for (ModelRefactoring ref : this.getModelRefactorings()) {

+			if (ref.getRefId().equals(id)) {

+				return ref;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * @param id

+	 *            des Helpers

+	 * @return Helper oder null, falls nicht existent

+	 */

+	public Helper getHelper(String id) {

+		for (Helper h : this.getHelper()) {

+			if (h.getHelperId().equals(id)) {

+				return h;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * @param id

+	 * @return Helper oder null, falls nicht existent

+	 */

+	public SingleFeatureHelper getSingleFeatureHelper(String id) {

+		Helper h = this.getHelper(id);

+		if (h != null && h instanceof SingleFeatureHelper) {

+			return (SingleFeatureHelper) h;

+		} else {

+			for (SingleFeatureHelper helper : RegistryUtil

+					.loadSingleFeatureHelper()) {

+				if (helper.getHelperId().equals(id))

+					return helper;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * @param id

+	 * @return Helper oder null, falls nicht existent

+	 */

+	public MultiFeatureHelper getMultiFeatureHelper(String id) {

+		Helper h = this.getHelper(id);

+		if (h != null && h instanceof MultiFeatureHelper) {

+			return (MultiFeatureHelper) h;

+		} else {

+			for (MultiFeatureHelper helper : RegistryUtil

+					.loadMultiFeatureHelper()) {

+				if (helper.getHelperId().equals(id))

+					return helper;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * @param id

+	 * @return Helper oder null, falls nicht existent

+	 */

+	public SingleFilterHelper getSingleFilterHelper(String id) {

+		Helper h = this.getHelper(id);

+		if (h != null && h instanceof SingleFilterHelper) {

+			return (SingleFilterHelper) h;

+		} else {

+			for (SingleFilterHelper helper : RegistryUtil

+					.loadSingleFilterHelper()) {

+				if (helper.getHelperId().equals(id))

+					return helper;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * @param id

+	 * @return Helper oder null, falls nicht existent

+	 */

+	public MultiFilterHelper getMultiFilterHelper(String id) {

+		Helper h = this.getHelper(id);

+		if (h != null && h instanceof MultiFilterHelper) {

+			return (MultiFilterHelper) h;

+		} else {

+			for (MultiFilterHelper helper : RegistryUtil

+					.loadMultiFilterHelper()) {

+				if (helper.getHelperId().equals(id))

+					return helper;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Liefert alle ModelRefactorings useses EmfRefactor-ExtensionPoint

+	 */

+	public Collection<ModelRefactoring> getEmfRefactoringsAsModelRefactorings() {

+		return RegistryUtil.getEmfRefactoringsAsModelRefactorings();

+	}

+

+	/**

+	 * Liefert das ModelRefactoring zur gegebener ID

+	 */

+	public ModelRefactoring getEmfRefactoringAsModelRefactoring(String id) {

+		for (ModelRefactoring ref : this.getModelRefactorings()) {

+			if (ref.getRefId().equals(id)) {

+				return ref;

+			}

+		}

+		for (ModelRefactoring ref : this.getEmfRefactoringsAsModelRefactorings()) {

+			if (ref.getRefId().equals(id)) {

+				return ref;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Look up, if the ModelRefactoring in use

+	 */

+	public boolean modelRefactoringInUse(ModelRefactoring ref,

+			AtomicUnit context) {

+		AtomicUnit atomicUnit;

+		for (RefactoringUnit refUnit : this.getAllRefactoringUnits()) {

+			if (refUnit instanceof AtomicUnit) {

+				atomicUnit = (AtomicUnit) refUnit;

+				if (atomicUnit.getModelRefactoring() == ref

+						&& !(context == atomicUnit)) {

+					return true;

+				}

+			}

+

+		}

+		return false;

+	}

+

+	/**

+	 * Look up, if the helper in use

+	 */

+	public boolean helperInUse(Helper helper, HelperUnit context) {

+		for (HelperUnit helperUnit : this.getAllHelperUnits()) {

+			if (this.getHelper(helperUnit.getHelperUnitId()) == helper

+					&& helperUnit != context) {

+				return true;

+			}

+		}

+		return false;

+	}

+

+	/**

+	 * Liefert alle direkten und indirekten RefactoringUnits

+	 * 

+	 * @return RefactoringUnits

+	 */

+	private List<RefactoringUnit> getAllRefactoringUnits() {

+		ArrayList<RefactoringUnit> result = new ArrayList<RefactoringUnit>();

+		Stack<RefactoringUnit> stack = new Stack<RefactoringUnit>();

+		RefactoringUnit refUnit;

+		refUnit = this.getMainRefactoringUnit();

+

+		SequentialUnit seqUnit;

+		if (refUnit != null) {

+			stack.push(refUnit);

+		}

+		while (!stack.isEmpty()) {

+			refUnit = stack.pop();

+			result.add(refUnit);

+			if (refUnit instanceof SequentialUnit) {

+				seqUnit = (SequentialUnit) refUnit;

+				for (RefactoringUnit rU : seqUnit.getRefactoringUnits()) {

+					stack.push(rU);

+				}

+			}

+			if (refUnit instanceof SingleQueuedUnit) {

+				SingleQueuedUnit queuedUnit = (SingleQueuedUnit) refUnit;

+				stack.push(queuedUnit.getRefactoringUnit());

+			}

+			if (refUnit instanceof ParallelQueuedUnit) {

+				ParallelQueuedUnit queuedUnit = (ParallelQueuedUnit) refUnit;

+				stack.push(queuedUnit.getRefactoringUnits());

+			}

+			if (refUnit instanceof CartesianQueuedUnit) {

+				CartesianQueuedUnit queuedUnit = (CartesianQueuedUnit) refUnit;

+				stack.push(queuedUnit.getRefactoringUnit());

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Liefert alle direkten und indirekten HelperUnits

+	 * 

+	 * @return HelperUnits

+	 */

+	private List<HelperUnit> getAllHelperUnits() {

+		ArrayList<HelperUnit> result = new ArrayList<HelperUnit>();

+		CompositeUnit compositeUnit;

+		for (RefactoringUnit unit : this.getAllRefactoringUnits()) {

+			if (unit instanceof CompositeUnit) {

+				compositeUnit = (CompositeUnit) unit;

+				result.addAll(compositeUnit.getHelperUnits());

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Liefert alle unbenutzten ModelRefactorings

+	 * 

+	 * @return

+	 */

+	public List<ModelRefactoring> getUnusedModelRefactorings() {

+		ArrayList<ModelRefactoring> result = new ArrayList<ModelRefactoring>();

+		for (ModelRefactoring mr : this.getModelRefactorings()) {

+			if (!(modelRefactoringInUse(mr, null))) {

+				result.add(mr);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Liefert alle unbenutzten Helper

+	 * 

+	 * @return

+	 */

+	public List<Helper> getUnusedHelper() {

+		ArrayList<Helper> result = new ArrayList<Helper>();

+		for (Helper helper : this.getHelper()) {

+			if (!helperInUse(helper, null)) {

+				result.add(helper);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Entfernt alle unbenutzten ModelRefactorings

+	 */

+	public void removeUnusedModelRefactorings() {

+		this.getModelRefactorings().removeAll(

+				this.getUnusedModelRefactorings());

+	}

+

+	/**

+	 * Entfernt alle unbentzten Helper

+	 */

+	public void removeUnusedHelper() {

+		this.getHelper().removeAll(this.getUnusedHelper());

+	}

+

+	public void setMappingNumbers(Set<Integer> mappingNumbers) {

+		this.mappingNumbers = mappingNumbers;

+	}

+

+	public Set<Integer> getMappingNumbers() {

+		return mappingNumbers;

+	}

+

+	public void cleanUpMappingNumbers() {

+		Set<Integer> set = new HashSet<Integer>();

+		for (PortMapping mapping : this.getPortMappings()) {

+			set.add(mapping.getMappingNumber());

+		}

+		this.setMappingNumbers(set);

+	}

+

+	public void updateVisualization() {

+		this.cleanUpMappingNumbers();

+		for (PortMapping mapping : this.getPortMappings()) {

+			if(mapping.getMappingNumber() == Integer.MAX_VALUE) {

+				mapping.updateMappingNumber();

+			}

+			mapping.updateVisualization();

+		}

+		updateSequentialOrderVisualization();

+	}

+	

+	private void updateSequentialOrderVisualization(){

+		SequentialUnit seq;

+		for(RefactoringUnit unit : this.getAllRefactoringUnits()) {

+			if(unit instanceof SequentialUnit) {

+				seq = (SequentialUnit) unit;

+				seq.updateSeqExecutionOrder();

+			}

+		}

+	}

+

+} //CompositeRefactoringImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/CompositeUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/CompositeUnitImpl.java
new file mode 100644
index 0000000..27a858a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/CompositeUnitImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.CompositeUnit;

+import comrel.ComrelPackage;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Composite Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class CompositeUnitImpl extends RefactoringUnitImpl implements CompositeUnit {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected CompositeUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.COMPOSITE_UNIT;

+	}

+

+} //CompositeUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/ComrelFactoryImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ComrelFactoryImpl.java
new file mode 100644
index 0000000..b37af8a
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ComrelFactoryImpl.java
@@ -0,0 +1,549 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.*;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EDataType;

+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;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model <b>Factory</b>.

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ComrelFactoryImpl extends EFactoryImpl implements ComrelFactory {

+	/**

+	 * Creates the default factory implementation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static ComrelFactory init() {

+		try {

+			ComrelFactory theComrelFactory = (ComrelFactory)EPackage.Registry.INSTANCE.getEFactory("http://comrel/0.1"); 

+			if (theComrelFactory != null) {

+				return theComrelFactory;

+			}

+		}

+		catch (Exception exception) {

+			EcorePlugin.INSTANCE.log(exception);

+		}

+		return new ComrelFactoryImpl();

+	}

+

+	/**

+	 * Creates an instance of the factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelFactoryImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public EObject create(EClass eClass) {

+		switch (eClass.getClassifierID()) {

+			case ComrelPackage.COMPOSITE_REFACTORING: return createCompositeRefactoring();

+			case ComrelPackage.MODEL_REFACTORING: return createModelRefactoring();

+			case ComrelPackage.ATOMIC_UNIT: return createAtomicUnit();

+			case ComrelPackage.SEQUENTIAL_UNIT: return createSequentialUnit();

+			case ComrelPackage.CONDITION_CHECK: return createConditionCheck();

+			case ComrelPackage.CONDITIONAL_UNIT: return createConditionalUnit();

+			case ComrelPackage.SINGLE_QUEUED_UNIT: return createSingleQueuedUnit();

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT: return createCartesianQueuedUnit();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT: return createParallelQueuedUnit();

+			case ComrelPackage.SINGLE_FEATURE_UNIT: return createSingleFeatureUnit();

+			case ComrelPackage.MULTI_FEATURE_UNIT: return createMultiFeatureUnit();

+			case ComrelPackage.SINGLE_FILTER_UNIT: return createSingleFilterUnit();

+			case ComrelPackage.MULTI_FILTER_UNIT: return createMultiFilterUnit();

+			case ComrelPackage.SINGLE_FEATURE_HELPER: return createSingleFeatureHelper();

+			case ComrelPackage.MULTI_FEATURE_HELPER: return createMultiFeatureHelper();

+			case ComrelPackage.SINGLE_FILTER_HELPER: return createSingleFilterHelper();

+			case ComrelPackage.MULTI_FILTER_HELPER: return createMultiFilterHelper();

+			case ComrelPackage.SINGLE_INPUT_PORT: return createSingleInputPort();

+			case ComrelPackage.MULTI_INPUT_PORT: return createMultiInputPort();

+			case ComrelPackage.SINGLE_OUTPUT_PORT: return createSingleOutputPort();

+			case ComrelPackage.MULTI_OUTPUT_PORT: return createMultiOutputPort();

+			case ComrelPackage.SINGLE_PORT_MAPPING: return createSinglePortMapping();

+			case ComrelPackage.MULTI_PORT_MAPPING: return createMultiPortMapping();

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING: return createMultiSinglePortMapping();

+			default:

+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object createFromString(EDataType eDataType, String initialValue) {

+		switch (eDataType.getClassifierID()) {

+			case ComrelPackage.MAPPING_VISUALIZATION:

+				return createMappingVisualizationFromString(eDataType, initialValue);

+			default:

+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String convertToString(EDataType eDataType, Object instanceValue) {

+		switch (eDataType.getClassifierID()) {

+			case ComrelPackage.MAPPING_VISUALIZATION:

+				return convertMappingVisualizationToString(eDataType, instanceValue);

+			default:

+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public CompositeRefactoring createCompositeRefactoring() {

+		CompositeRefactoringImpl compositeRefactoring = new CompositeRefactoringImpl();

+		return compositeRefactoring;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ModelRefactoring createModelRefactoring() {

+		ModelRefactoringImpl modelRefactoring = new ModelRefactoringImpl();

+		return modelRefactoring;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public AtomicUnit createAtomicUnit() {

+		AtomicUnitImpl atomicUnit = new AtomicUnitImpl();

+		return atomicUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SequentialUnit createSequentialUnit() {

+		SequentialUnitImpl sequentialUnit = new SequentialUnitImpl();

+		return sequentialUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ConditionCheck createConditionCheck() {

+		ConditionCheckImpl conditionCheck = new ConditionCheckImpl();

+		return conditionCheck;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ConditionalUnit createConditionalUnit() {

+		ConditionalUnitImpl conditionalUnit = new ConditionalUnitImpl();

+		return conditionalUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleQueuedUnit createSingleQueuedUnit() {

+		SingleQueuedUnitImpl singleQueuedUnit = new SingleQueuedUnitImpl();

+		singleQueuedUnit.setMultiInputPort(new MultiInputPortImpl());

+		return singleQueuedUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public CartesianQueuedUnit createCartesianQueuedUnit() {

+		CartesianQueuedUnitImpl cartesianQueuedUnit = new CartesianQueuedUnitImpl();

+		// TODO

+		return cartesianQueuedUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ParallelQueuedUnit createParallelQueuedUnit() {

+		ParallelQueuedUnitImpl parallelQueuedUnit = new ParallelQueuedUnitImpl();

+		// TODO

+		return parallelQueuedUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFeatureUnit createSingleFeatureUnit() {

+		SingleFeatureUnitImpl singleFeatureUnit = new SingleFeatureUnitImpl();

+		

+		SingleInputPort inPort = this.createSingleInputPort();

+		inPort.setName("Dummy");

+		inPort.setDescription("Dummy");

+		inPort.setType(String.class);

+		inPort.setValue(new String("Dummy"));

+		singleFeatureUnit.setInputPort(inPort);

+		

+		SingleOutputPort outPort = this.createSingleOutputPort();

+		outPort.setName("Dummy");

+		outPort.setDescription("Dummy");

+		outPort.setType(String.class);

+		outPort.setValue(new String("Dummy"));

+		singleFeatureUnit.setOutputPort(outPort);

+		

+		return singleFeatureUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFeatureUnit createMultiFeatureUnit() {

+		MultiFeatureUnitImpl multiFeatureUnit = new MultiFeatureUnitImpl();

+		

+		SingleInputPort inPort = this.createSingleInputPort();

+		inPort.setName("Dummy");

+		inPort.setDescription("Dummy");

+		inPort.setType(String.class);

+		inPort.setValue(new String("Dummy"));

+		multiFeatureUnit.setInputPort(inPort);

+		

+		MultiOutputPort outPort = this.createMultiOutputPort();

+		outPort.setName("Dummy");

+		outPort.setDescription("Dummy");

+		outPort.setType(String.class);

+		outPort.getValue().add("Dummy");

+		multiFeatureUnit.setOutputPort(outPort);

+		

+		return multiFeatureUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFilterUnit createSingleFilterUnit() {

+		SingleFilterUnitImpl singleFilterUnit = new SingleFilterUnitImpl();

+		return singleFilterUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFilterUnit createMultiFilterUnit() {

+		MultiFilterUnitImpl multiFilterUnit = new MultiFilterUnitImpl();

+		return multiFilterUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFeatureHelper createSingleFeatureHelper() {

+		SingleFeatureHelperImpl singleFeatureHelper = new SingleFeatureHelperImpl();

+		return singleFeatureHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFeatureHelper createMultiFeatureHelper() {

+		MultiFeatureHelperImpl multiFeatureHelper = new MultiFeatureHelperImpl();

+		return multiFeatureHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFilterHelper createSingleFilterHelper() {

+		SingleFilterHelperImpl singleFilterHelper = new SingleFilterHelperImpl();

+		return singleFilterHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFilterHelper createMultiFilterHelper() {

+		MultiFilterHelperImpl multiFilterHelper = new MultiFilterHelperImpl();

+		return multiFilterHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort createSingleInputPort() {

+		SingleInputPortImpl singleInputPort = new SingleInputPortImpl();

+		return singleInputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort createMultiInputPort() {

+		MultiInputPortImpl multiInputPort = new MultiInputPortImpl();

+		return multiInputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleOutputPort createSingleOutputPort() {

+		SingleOutputPortImpl singleOutputPort = new SingleOutputPortImpl();

+		return singleOutputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiOutputPort createMultiOutputPort() {

+		MultiOutputPortImpl multiOutputPort = new MultiOutputPortImpl();

+		return multiOutputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SinglePortMapping createSinglePortMapping() {

+		SinglePortMappingImpl singlePortMapping = new SinglePortMappingImpl();

+		return singlePortMapping;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPortMapping createMultiPortMapping() {

+		MultiPortMappingImpl multiPortMapping = new MultiPortMappingImpl();

+		return multiPortMapping;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiSinglePortMapping createMultiSinglePortMapping() {

+		MultiSinglePortMappingImpl multiSinglePortMapping = new MultiSinglePortMappingImpl();

+		return multiSinglePortMapping;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MappingVisualization createMappingVisualizationFromString(EDataType eDataType, String initialValue) {

+		MappingVisualization result = MappingVisualization.get(initialValue);

+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");

+		return result;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String convertMappingVisualizationToString(EDataType eDataType, Object instanceValue) {

+		return instanceValue == null ? null : instanceValue.toString();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelPackage getComrelPackage() {

+		return (ComrelPackage)getEPackage();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @deprecated

+	 * @generated

+	 */

+	@Deprecated

+	public static ComrelPackage getPackage() {

+		return ComrelPackage.eINSTANCE;

+	}

+

+	@Override

+	public ModelRefactoring createModelRefactoring(String id) {

+		ModelRefactoring modelRefactoring = new ModelRefactoringImpl(id);

+		if(modelRefactoring.getInputPorts().size()==0) {

+			SingleInputPort port = new SingleInputPortImpl();

+			port.setName("Dummy");

+			port.setDescription("Dummy");

+			port.setType(String.class);

+			port.setValue("Dummy");

+		}

+		return modelRefactoring;

+	}

+

+	@Override

+	public AtomicUnit createAtomicUnit(ModelRefactoring refactoring) {

+		AtomicUnit atomicUnit = new AtomicUnitImpl(refactoring);

+		return atomicUnit;

+	}

+

+	@Override

+	public SingleFeatureUnit createSingleFeatureUnit(SingleFeatureHelper helper) {

+		SingleFeatureUnitImpl singleFeatureUnit = new SingleFeatureUnitImpl(helper);

+		if(singleFeatureUnit.getInputPort() == null) {

+			SingleInputPort inPort = this.createSingleInputPort();

+			inPort.setName("Dummy");

+			inPort.setDescription("Dummy");

+			inPort.setType(String.class);

+			inPort.setValue(new String("Dummy"));

+			singleFeatureUnit.setInputPort(inPort);

+		}

+		if(singleFeatureUnit.getOutputPort() == null) {

+			SingleOutputPort outPort = this.createSingleOutputPort();

+			outPort.setName("Dummy");

+			outPort.setDescription("Dummy");

+			outPort.setType(String.class);

+			outPort.setValue(new String("Dummy"));

+			singleFeatureUnit.setOutputPort(outPort);

+		}

+		

+		return singleFeatureUnit;

+	}

+

+	@Override

+	public MultiFeatureUnit createMultiFeatureUnit(MultiFeatureHelper helper) {

+		MultiFeatureUnitImpl multiFeatureUnit = new MultiFeatureUnitImpl(helper);

+		

+		if(multiFeatureUnit.getInputPort() == null) {

+			SingleInputPort inPort = this.createSingleInputPort();

+			inPort.setName("Dummy");

+			inPort.setDescription("Dummy");

+			inPort.setType(String.class);

+			inPort.setValue(new String("Dummy"));

+			multiFeatureUnit.setInputPort(inPort);

+		}

+		if(multiFeatureUnit.getOutputPort() == null) {

+			MultiOutputPort outPort = this.createMultiOutputPort();

+			outPort.setName("Dummy");

+			outPort.setDescription("Dummy");

+			outPort.setType(String.class);

+			outPort.getValue().add(new String("Dummy"));

+			multiFeatureUnit.setOutputPort(outPort);

+		}

+		

+		return multiFeatureUnit;

+	}

+

+	@Override

+	public SingleFilterUnit createSingleFilterUnit(SingleFilterHelper helper) {

+		SingleFilterUnitImpl filterUnit = new SingleFilterUnitImpl(helper);

+		

+		if(filterUnit.getInputPort() == null) {

+			MultiInputPort inPort = this.createMultiInputPort();

+			inPort.setName("Dummy");

+			inPort.setDescription("Dummy");

+			inPort.setType(String.class);

+			inPort.getValue().add(new String("Dummy"));

+			filterUnit.setInputPort(inPort);

+		}

+		if(filterUnit.getOutputPort() == null) {

+			SingleOutputPort outPort = this.createSingleOutputPort();

+			outPort.setName("Dummy");

+			outPort.setDescription("Dummy");

+			outPort.setType(String.class);

+			outPort.setValue(new String("Dummy"));

+			filterUnit.setOutputPort(outPort);

+		}

+		return filterUnit;

+	}

+

+	@Override

+	public MultiFilterUnit createMultiFilterUnit(MultiFilterHelper helper) {

+		MultiFilterUnitImpl filterUnit = new MultiFilterUnitImpl(helper);

+		

+		if(filterUnit.getInputPort() == null) {

+			MultiInputPort inPort = this.createMultiInputPort();

+			inPort.setName("Dummy");

+			inPort.setDescription("Dummy");

+			inPort.setType(String.class);

+			inPort.getValue().add(new String("Dummy"));

+			filterUnit.setInputPort(inPort);

+		}

+		if(filterUnit.getOutputPort() == null) {

+			MultiOutputPort outPort = this.createMultiOutputPort();

+			outPort.setName("Dummy");

+			outPort.setDescription("Dummy");

+			outPort.setType(String.class);

+			outPort.getValue().add(new String("Dummy"));

+			filterUnit.setOutputPort(outPort);

+		}

+		

+		return filterUnit;

+	}

+

+} //ComrelFactoryImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/ComrelPackageImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ComrelPackageImpl.java
new file mode 100644
index 0000000..6d5e299
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ComrelPackageImpl.java
@@ -0,0 +1,2610 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.AtomicUnit;

+import comrel.CartesianQueuedUnit;

+import comrel.CompositeRefactoring;

+import comrel.CompositeUnit;

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.ConditionCheck;

+import comrel.ConditionalUnit;

+import comrel.DescribedElement;

+import comrel.FeatureHelper;

+import comrel.FeatureUnit;

+import comrel.FilterHelper;

+import comrel.FilterUnit;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MappingVisualization;

+import comrel.ModelRefactoring;

+import comrel.MultiFeatureHelper;

+import comrel.MultiFeatureUnit;

+import comrel.MultiFilterHelper;

+import comrel.MultiFilterUnit;

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+import comrel.MultiSinglePortMapping;

+import comrel.NamedElement;

+import comrel.OutputPort;

+import comrel.ParallelQueuedUnit;

+import comrel.Port;

+import comrel.PortMapping;

+import comrel.QueuedUnit;

+import comrel.RefactoringUnit;

+import comrel.SequentialUnit;

+import comrel.SingleFeatureHelper;

+import comrel.SingleFeatureUnit;

+import comrel.SingleFilterHelper;

+import comrel.SingleFilterUnit;

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+import comrel.SingleQueuedUnit;

+import comrel.TwicedQueuedUnit;

+

+import org.eclipse.emf.ecore.EAttribute;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EEnum;

+import org.eclipse.emf.ecore.EOperation;

+import org.eclipse.emf.ecore.EPackage;

+import org.eclipse.emf.ecore.EReference;

+

+import org.eclipse.emf.ecore.impl.EPackageImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model <b>Package</b>.

+ * <!-- end-user-doc -->

+ * @generated

+ */

+public class ComrelPackageImpl extends EPackageImpl implements ComrelPackage {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass compositeRefactoringEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass namedElementEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass describedElementEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass refactoringUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass modelRefactoringEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass atomicUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass compositeUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass sequentialUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass conditionCheckEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass conditionalUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass queuedUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleQueuedUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass twicedQueuedUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass cartesianQueuedUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass parallelQueuedUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass helperUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass featureUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleFeatureUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiFeatureUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass filterUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleFilterUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiFilterUnitEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass helperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass featureHelperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleFeatureHelperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiFeatureHelperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass filterHelperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleFilterHelperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiFilterHelperEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass portEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singlePortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass inputPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass outputPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleInputPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiInputPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singleOutputPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiOutputPortEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass portMappingEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass singlePortMappingEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiPortMappingEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EClass multiSinglePortMappingEClass = null;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private EEnum mappingVisualizationEEnum = 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 comrel.ComrelPackage#eNS_URI

+	 * @see #init()

+	 * @generated

+	 */

+	private ComrelPackageImpl() {

+		super(eNS_URI, ComrelFactory.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 ComrelPackage#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 ComrelPackage init() {

+		if (isInited) return (ComrelPackage)EPackage.Registry.INSTANCE.getEPackage(ComrelPackage.eNS_URI);

+

+		// Obtain or create and register package

+		ComrelPackageImpl theComrelPackage = (ComrelPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ComrelPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ComrelPackageImpl());

+

+		isInited = true;

+

+		// Create package meta-data objects

+		theComrelPackage.createPackageContents();

+

+		// Initialize created meta-data

+		theComrelPackage.initializePackageContents();

+

+		// Mark meta-data to indicate it can't be changed

+		theComrelPackage.freeze();

+

+  

+		// Update the registry and return the package

+		EPackage.Registry.INSTANCE.put(ComrelPackage.eNS_URI, theComrelPackage);

+		return theComrelPackage;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getCompositeRefactoring() {

+		return compositeRefactoringEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCompositeRefactoring_MainRefactoringUnit() {

+		return (EReference)compositeRefactoringEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCompositeRefactoring_PortMappings() {

+		return (EReference)compositeRefactoringEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCompositeRefactoring_ModelRefactorings() {

+		return (EReference)compositeRefactoringEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCompositeRefactoring_Helper() {

+		return (EReference)compositeRefactoringEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getCompositeRefactoring_MappingVisualization() {

+		return (EAttribute)compositeRefactoringEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getCompositeRefactoring_CustomInitialCondition() {

+		return (EAttribute)compositeRefactoringEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getCompositeRefactoring_CustomFinalCondition() {

+		return (EAttribute)compositeRefactoringEClass.getEStructuralFeatures().get(6);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getNamedElement() {

+		return namedElementEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getNamedElement_Name() {

+		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getDescribedElement() {

+		return describedElementEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getDescribedElement_Description() {

+		return (EAttribute)describedElementEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getRefactoringUnit() {

+		return refactoringUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getRefactoringUnit_SeqExecutionOrder() {

+		return (EAttribute)refactoringUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getModelRefactoring() {

+		return modelRefactoringEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getModelRefactoring_RefId() {

+		return (EAttribute)modelRefactoringEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getModelRefactoring_Label() {

+		return (EAttribute)modelRefactoringEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getModelRefactoring_NamespaceUri() {

+		return (EAttribute)modelRefactoringEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getModelRefactoring_InputPorts() {

+		return (EReference)modelRefactoringEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getAtomicUnit() {

+		return atomicUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getAtomicUnit_InputPorts() {

+		return (EReference)atomicUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getAtomicUnit_UnitId() {

+		return (EAttribute)atomicUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getAtomicUnit_Label() {

+		return (EAttribute)atomicUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getAtomicUnit_NamespaceUri() {

+		return (EAttribute)atomicUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getAtomicUnit_Type() {

+		return (EAttribute)atomicUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getAtomicUnit_ModelRefactoring() {

+		return (EReference)atomicUnitEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getAtomicUnit_CheckInitialConditionFlag() {

+		return (EAttribute)atomicUnitEClass.getEStructuralFeatures().get(6);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getAtomicUnit_CheckFinalConditionFlag() {

+		return (EAttribute)atomicUnitEClass.getEStructuralFeatures().get(7);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getCompositeUnit() {

+		return compositeUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSequentialUnit() {

+		return sequentialUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSequentialUnit_HelperUnits() {

+		return (EReference)sequentialUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSequentialUnit_RefactoringUnits() {

+		return (EReference)sequentialUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSequentialUnit_InputPorts() {

+		return (EReference)sequentialUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSequentialUnit_Strict() {

+		return (EAttribute)sequentialUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSequentialUnit_Type() {

+		return (EAttribute)sequentialUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSequentialUnit_LblStrict() {

+		return (EAttribute)sequentialUnitEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getConditionCheck() {

+		return conditionCheckEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getConditionCheck_Type() {

+		return (EAttribute)conditionCheckEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getConditionCheck_Spec() {

+		return (EAttribute)conditionCheckEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getConditionalUnit() {

+		return conditionalUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getConditionalUnit_If() {

+		return (EReference)conditionalUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getConditionalUnit_HelperUnits() {

+		return (EReference)conditionalUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getConditionalUnit_Then() {

+		return (EReference)conditionalUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getConditionalUnit_Else() {

+		return (EReference)conditionalUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getConditionalUnit_InputPorts() {

+		return (EReference)conditionalUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getConditionalUnit_Type() {

+		return (EAttribute)conditionalUnitEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getQueuedUnit() {

+		return queuedUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getQueuedUnit_Strict() {

+		return (EAttribute)queuedUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleQueuedUnit() {

+		return singleQueuedUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleQueuedUnit_HelperUnits() {

+		return (EReference)singleQueuedUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleQueuedUnit_RefactoringUnit() {

+		return (EReference)singleQueuedUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleQueuedUnit_SingleInputPorts() {

+		return (EReference)singleQueuedUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleQueuedUnit_MultiInputPort() {

+		return (EReference)singleQueuedUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSingleQueuedUnit_Type() {

+		return (EAttribute)singleQueuedUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSingleQueuedUnit_LblStrict() {

+		return (EAttribute)singleQueuedUnitEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getTwicedQueuedUnit() {

+		return twicedQueuedUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getCartesianQueuedUnit() {

+		return cartesianQueuedUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCartesianQueuedUnit_HelperUnits() {

+		return (EReference)cartesianQueuedUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCartesianQueuedUnit_RefactoringUnit() {

+		return (EReference)cartesianQueuedUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCartesianQueuedUnit_SingleInputPorts() {

+		return (EReference)cartesianQueuedUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getCartesianQueuedUnit_MultiInputPorts() {

+		return (EReference)cartesianQueuedUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getCartesianQueuedUnit_Type() {

+		return (EAttribute)cartesianQueuedUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getCartesianQueuedUnit_LblStrict() {

+		return (EAttribute)cartesianQueuedUnitEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getParallelQueuedUnit() {

+		return parallelQueuedUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getParallelQueuedUnit_HelperUnits() {

+		return (EReference)parallelQueuedUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getParallelQueuedUnit_RefactoringUnits() {

+		return (EReference)parallelQueuedUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getParallelQueuedUnit_SingleInputPorts() {

+		return (EReference)parallelQueuedUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getParallelQueuedUnit_MultiInputPorts() {

+		return (EReference)parallelQueuedUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getParallelQueuedUnit_Type() {

+		return (EAttribute)parallelQueuedUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getParallelQueuedUnit_LblStrict() {

+		return (EAttribute)parallelQueuedUnitEClass.getEStructuralFeatures().get(5);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getHelperUnit() {

+		return helperUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getHelperUnit_HelperUnitId() {

+		return (EAttribute)helperUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getHelperUnit_NamespaceUri() {

+		return (EAttribute)helperUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getFeatureUnit() {

+		return featureUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleFeatureUnit() {

+		return singleFeatureUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFeatureUnit_InputPort() {

+		return (EReference)singleFeatureUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFeatureUnit_SecondaryInputPorts() {

+		return (EReference)singleFeatureUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFeatureUnit_OutputPort() {

+		return (EReference)singleFeatureUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFeatureUnit_SingleFeatureHelper() {

+		return (EReference)singleFeatureUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSingleFeatureUnit_Type() {

+		return (EAttribute)singleFeatureUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiFeatureUnit() {

+		return multiFeatureUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFeatureUnit_InputPort() {

+		return (EReference)multiFeatureUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFeatureUnit_SecondaryInputPorts() {

+		return (EReference)multiFeatureUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFeatureUnit_OutputPort() {

+		return (EReference)multiFeatureUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFeatureUnit_MultiFeatureHelper() {

+		return (EReference)multiFeatureUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMultiFeatureUnit_Type() {

+		return (EAttribute)multiFeatureUnitEClass.getEStructuralFeatures().get(4);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getFilterUnit() {

+		return filterUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleFilterUnit() {

+		return singleFilterUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFilterUnit_InputPort() {

+		return (EReference)singleFilterUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFilterUnit_OutputPort() {

+		return (EReference)singleFilterUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFilterUnit_SingleFilterHelper() {

+		return (EReference)singleFilterUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSingleFilterUnit_Type() {

+		return (EAttribute)singleFilterUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiFilterUnit() {

+		return multiFilterUnitEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFilterUnit_InputPort() {

+		return (EReference)multiFilterUnitEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFilterUnit_OutputPort() {

+		return (EReference)multiFilterUnitEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFilterUnit_MultiFilterHelper() {

+		return (EReference)multiFilterUnitEClass.getEStructuralFeatures().get(2);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMultiFilterUnit_Type() {

+		return (EAttribute)multiFilterUnitEClass.getEStructuralFeatures().get(3);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getHelper() {

+		return helperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getHelper_HelperId() {

+		return (EAttribute)helperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getHelper_NamespaceUri() {

+		return (EAttribute)helperEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getFeatureHelper() {

+		return featureHelperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getFeatureHelper_InputPort() {

+		return (EReference)featureHelperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getFeatureHelper_SecondaryInputPorts() {

+		return (EReference)featureHelperEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleFeatureHelper() {

+		return singleFeatureHelperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFeatureHelper_OutputPort() {

+		return (EReference)singleFeatureHelperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiFeatureHelper() {

+		return multiFeatureHelperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFeatureHelper_OutputPort() {

+		return (EReference)multiFeatureHelperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getFilterHelper() {

+		return filterHelperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getFilterHelper_InputPort() {

+		return (EReference)filterHelperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleFilterHelper() {

+		return singleFilterHelperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSingleFilterHelper_OutputPort() {

+		return (EReference)singleFilterHelperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiFilterHelper() {

+		return multiFilterHelperEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiFilterHelper_OutputPort() {

+		return (EReference)multiFilterHelperEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getPort() {

+		return portEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getPort_Type() {

+		return (EAttribute)portEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSinglePort() {

+		return singlePortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getSinglePort_Value() {

+		return (EAttribute)singlePortEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiPort() {

+		return multiPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EAttribute getMultiPort_Value() {

+		return (EAttribute)multiPortEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getInputPort() {

+		return inputPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getOutputPort() {

+		return outputPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleInputPort() {

+		return singleInputPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiInputPort() {

+		return multiInputPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSingleOutputPort() {

+		return singleOutputPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiOutputPort() {

+		return multiOutputPortEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getPortMapping() {

+		return portMappingEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getSinglePortMapping() {

+		return singlePortMappingEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSinglePortMapping_Source() {

+		return (EReference)singlePortMappingEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getSinglePortMapping_Target() {

+		return (EReference)singlePortMappingEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiPortMapping() {

+		return multiPortMappingEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiPortMapping_Source() {

+		return (EReference)multiPortMappingEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiPortMapping_Target() {

+		return (EReference)multiPortMappingEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EClass getMultiSinglePortMapping() {

+		return multiSinglePortMappingEClass;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiSinglePortMapping_Source() {

+		return (EReference)multiSinglePortMappingEClass.getEStructuralFeatures().get(0);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EReference getMultiSinglePortMapping_Target() {

+		return (EReference)multiSinglePortMappingEClass.getEStructuralFeatures().get(1);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EEnum getMappingVisualization() {

+		return mappingVisualizationEEnum;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelFactory getComrelFactory() {

+		return (ComrelFactory)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

+		compositeRefactoringEClass = createEClass(COMPOSITE_REFACTORING);

+		createEReference(compositeRefactoringEClass, COMPOSITE_REFACTORING__MAIN_REFACTORING_UNIT);

+		createEReference(compositeRefactoringEClass, COMPOSITE_REFACTORING__PORT_MAPPINGS);

+		createEReference(compositeRefactoringEClass, COMPOSITE_REFACTORING__MODEL_REFACTORINGS);

+		createEReference(compositeRefactoringEClass, COMPOSITE_REFACTORING__HELPER);

+		createEAttribute(compositeRefactoringEClass, COMPOSITE_REFACTORING__MAPPING_VISUALIZATION);

+		createEAttribute(compositeRefactoringEClass, COMPOSITE_REFACTORING__CUSTOM_INITIAL_CONDITION);

+		createEAttribute(compositeRefactoringEClass, COMPOSITE_REFACTORING__CUSTOM_FINAL_CONDITION);

+

+		namedElementEClass = createEClass(NAMED_ELEMENT);

+		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);

+

+		describedElementEClass = createEClass(DESCRIBED_ELEMENT);

+		createEAttribute(describedElementEClass, DESCRIBED_ELEMENT__DESCRIPTION);

+

+		refactoringUnitEClass = createEClass(REFACTORING_UNIT);

+		createEAttribute(refactoringUnitEClass, REFACTORING_UNIT__SEQ_EXECUTION_ORDER);

+

+		modelRefactoringEClass = createEClass(MODEL_REFACTORING);

+		createEAttribute(modelRefactoringEClass, MODEL_REFACTORING__REF_ID);

+		createEAttribute(modelRefactoringEClass, MODEL_REFACTORING__LABEL);

+		createEAttribute(modelRefactoringEClass, MODEL_REFACTORING__NAMESPACE_URI);

+		createEReference(modelRefactoringEClass, MODEL_REFACTORING__INPUT_PORTS);

+

+		atomicUnitEClass = createEClass(ATOMIC_UNIT);

+		createEReference(atomicUnitEClass, ATOMIC_UNIT__INPUT_PORTS);

+		createEAttribute(atomicUnitEClass, ATOMIC_UNIT__UNIT_ID);

+		createEAttribute(atomicUnitEClass, ATOMIC_UNIT__LABEL);

+		createEAttribute(atomicUnitEClass, ATOMIC_UNIT__NAMESPACE_URI);

+		createEAttribute(atomicUnitEClass, ATOMIC_UNIT__TYPE);

+		createEReference(atomicUnitEClass, ATOMIC_UNIT__MODEL_REFACTORING);

+		createEAttribute(atomicUnitEClass, ATOMIC_UNIT__CHECK_INITIAL_CONDITION_FLAG);

+		createEAttribute(atomicUnitEClass, ATOMIC_UNIT__CHECK_FINAL_CONDITION_FLAG);

+

+		compositeUnitEClass = createEClass(COMPOSITE_UNIT);

+

+		sequentialUnitEClass = createEClass(SEQUENTIAL_UNIT);

+		createEReference(sequentialUnitEClass, SEQUENTIAL_UNIT__HELPER_UNITS);

+		createEReference(sequentialUnitEClass, SEQUENTIAL_UNIT__REFACTORING_UNITS);

+		createEReference(sequentialUnitEClass, SEQUENTIAL_UNIT__INPUT_PORTS);

+		createEAttribute(sequentialUnitEClass, SEQUENTIAL_UNIT__STRICT);

+		createEAttribute(sequentialUnitEClass, SEQUENTIAL_UNIT__TYPE);

+		createEAttribute(sequentialUnitEClass, SEQUENTIAL_UNIT__LBL_STRICT);

+

+		conditionCheckEClass = createEClass(CONDITION_CHECK);

+		createEAttribute(conditionCheckEClass, CONDITION_CHECK__TYPE);

+		createEAttribute(conditionCheckEClass, CONDITION_CHECK__SPEC);

+

+		conditionalUnitEClass = createEClass(CONDITIONAL_UNIT);

+		createEReference(conditionalUnitEClass, CONDITIONAL_UNIT__IF);

+		createEReference(conditionalUnitEClass, CONDITIONAL_UNIT__HELPER_UNITS);

+		createEReference(conditionalUnitEClass, CONDITIONAL_UNIT__THEN);

+		createEReference(conditionalUnitEClass, CONDITIONAL_UNIT__ELSE);

+		createEReference(conditionalUnitEClass, CONDITIONAL_UNIT__INPUT_PORTS);

+		createEAttribute(conditionalUnitEClass, CONDITIONAL_UNIT__TYPE);

+

+		queuedUnitEClass = createEClass(QUEUED_UNIT);

+		createEAttribute(queuedUnitEClass, QUEUED_UNIT__STRICT);

+

+		singleQueuedUnitEClass = createEClass(SINGLE_QUEUED_UNIT);

+		createEReference(singleQueuedUnitEClass, SINGLE_QUEUED_UNIT__HELPER_UNITS);

+		createEReference(singleQueuedUnitEClass, SINGLE_QUEUED_UNIT__REFACTORING_UNIT);

+		createEReference(singleQueuedUnitEClass, SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+		createEReference(singleQueuedUnitEClass, SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT);

+		createEAttribute(singleQueuedUnitEClass, SINGLE_QUEUED_UNIT__TYPE);

+		createEAttribute(singleQueuedUnitEClass, SINGLE_QUEUED_UNIT__LBL_STRICT);

+

+		twicedQueuedUnitEClass = createEClass(TWICED_QUEUED_UNIT);

+

+		cartesianQueuedUnitEClass = createEClass(CARTESIAN_QUEUED_UNIT);

+		createEReference(cartesianQueuedUnitEClass, CARTESIAN_QUEUED_UNIT__HELPER_UNITS);

+		createEReference(cartesianQueuedUnitEClass, CARTESIAN_QUEUED_UNIT__REFACTORING_UNIT);

+		createEReference(cartesianQueuedUnitEClass, CARTESIAN_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+		createEReference(cartesianQueuedUnitEClass, CARTESIAN_QUEUED_UNIT__MULTI_INPUT_PORTS);

+		createEAttribute(cartesianQueuedUnitEClass, CARTESIAN_QUEUED_UNIT__TYPE);

+		createEAttribute(cartesianQueuedUnitEClass, CARTESIAN_QUEUED_UNIT__LBL_STRICT);

+

+		parallelQueuedUnitEClass = createEClass(PARALLEL_QUEUED_UNIT);

+		createEReference(parallelQueuedUnitEClass, PARALLEL_QUEUED_UNIT__HELPER_UNITS);

+		createEReference(parallelQueuedUnitEClass, PARALLEL_QUEUED_UNIT__REFACTORING_UNITS);

+		createEReference(parallelQueuedUnitEClass, PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+		createEReference(parallelQueuedUnitEClass, PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS);

+		createEAttribute(parallelQueuedUnitEClass, PARALLEL_QUEUED_UNIT__TYPE);

+		createEAttribute(parallelQueuedUnitEClass, PARALLEL_QUEUED_UNIT__LBL_STRICT);

+

+		helperUnitEClass = createEClass(HELPER_UNIT);

+		createEAttribute(helperUnitEClass, HELPER_UNIT__HELPER_UNIT_ID);

+		createEAttribute(helperUnitEClass, HELPER_UNIT__NAMESPACE_URI);

+

+		featureUnitEClass = createEClass(FEATURE_UNIT);

+

+		singleFeatureUnitEClass = createEClass(SINGLE_FEATURE_UNIT);

+		createEReference(singleFeatureUnitEClass, SINGLE_FEATURE_UNIT__INPUT_PORT);

+		createEReference(singleFeatureUnitEClass, SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS);

+		createEReference(singleFeatureUnitEClass, SINGLE_FEATURE_UNIT__OUTPUT_PORT);

+		createEReference(singleFeatureUnitEClass, SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER);

+		createEAttribute(singleFeatureUnitEClass, SINGLE_FEATURE_UNIT__TYPE);

+

+		multiFeatureUnitEClass = createEClass(MULTI_FEATURE_UNIT);

+		createEReference(multiFeatureUnitEClass, MULTI_FEATURE_UNIT__INPUT_PORT);

+		createEReference(multiFeatureUnitEClass, MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS);

+		createEReference(multiFeatureUnitEClass, MULTI_FEATURE_UNIT__OUTPUT_PORT);

+		createEReference(multiFeatureUnitEClass, MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER);

+		createEAttribute(multiFeatureUnitEClass, MULTI_FEATURE_UNIT__TYPE);

+

+		filterUnitEClass = createEClass(FILTER_UNIT);

+

+		singleFilterUnitEClass = createEClass(SINGLE_FILTER_UNIT);

+		createEReference(singleFilterUnitEClass, SINGLE_FILTER_UNIT__INPUT_PORT);

+		createEReference(singleFilterUnitEClass, SINGLE_FILTER_UNIT__OUTPUT_PORT);

+		createEReference(singleFilterUnitEClass, SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER);

+		createEAttribute(singleFilterUnitEClass, SINGLE_FILTER_UNIT__TYPE);

+

+		multiFilterUnitEClass = createEClass(MULTI_FILTER_UNIT);

+		createEReference(multiFilterUnitEClass, MULTI_FILTER_UNIT__INPUT_PORT);

+		createEReference(multiFilterUnitEClass, MULTI_FILTER_UNIT__OUTPUT_PORT);

+		createEReference(multiFilterUnitEClass, MULTI_FILTER_UNIT__MULTI_FILTER_HELPER);

+		createEAttribute(multiFilterUnitEClass, MULTI_FILTER_UNIT__TYPE);

+

+		helperEClass = createEClass(HELPER);

+		createEAttribute(helperEClass, HELPER__HELPER_ID);

+		createEAttribute(helperEClass, HELPER__NAMESPACE_URI);

+

+		featureHelperEClass = createEClass(FEATURE_HELPER);

+		createEReference(featureHelperEClass, FEATURE_HELPER__INPUT_PORT);

+		createEReference(featureHelperEClass, FEATURE_HELPER__SECONDARY_INPUT_PORTS);

+

+		singleFeatureHelperEClass = createEClass(SINGLE_FEATURE_HELPER);

+		createEReference(singleFeatureHelperEClass, SINGLE_FEATURE_HELPER__OUTPUT_PORT);

+

+		multiFeatureHelperEClass = createEClass(MULTI_FEATURE_HELPER);

+		createEReference(multiFeatureHelperEClass, MULTI_FEATURE_HELPER__OUTPUT_PORT);

+

+		filterHelperEClass = createEClass(FILTER_HELPER);

+		createEReference(filterHelperEClass, FILTER_HELPER__INPUT_PORT);

+

+		singleFilterHelperEClass = createEClass(SINGLE_FILTER_HELPER);

+		createEReference(singleFilterHelperEClass, SINGLE_FILTER_HELPER__OUTPUT_PORT);

+

+		multiFilterHelperEClass = createEClass(MULTI_FILTER_HELPER);

+		createEReference(multiFilterHelperEClass, MULTI_FILTER_HELPER__OUTPUT_PORT);

+

+		portEClass = createEClass(PORT);

+		createEAttribute(portEClass, PORT__TYPE);

+

+		singlePortEClass = createEClass(SINGLE_PORT);

+		createEAttribute(singlePortEClass, SINGLE_PORT__VALUE);

+

+		multiPortEClass = createEClass(MULTI_PORT);

+		createEAttribute(multiPortEClass, MULTI_PORT__VALUE);

+

+		inputPortEClass = createEClass(INPUT_PORT);

+

+		outputPortEClass = createEClass(OUTPUT_PORT);

+

+		singleInputPortEClass = createEClass(SINGLE_INPUT_PORT);

+

+		multiInputPortEClass = createEClass(MULTI_INPUT_PORT);

+

+		singleOutputPortEClass = createEClass(SINGLE_OUTPUT_PORT);

+

+		multiOutputPortEClass = createEClass(MULTI_OUTPUT_PORT);

+

+		portMappingEClass = createEClass(PORT_MAPPING);

+

+		singlePortMappingEClass = createEClass(SINGLE_PORT_MAPPING);

+		createEReference(singlePortMappingEClass, SINGLE_PORT_MAPPING__SOURCE);

+		createEReference(singlePortMappingEClass, SINGLE_PORT_MAPPING__TARGET);

+

+		multiPortMappingEClass = createEClass(MULTI_PORT_MAPPING);

+		createEReference(multiPortMappingEClass, MULTI_PORT_MAPPING__SOURCE);

+		createEReference(multiPortMappingEClass, MULTI_PORT_MAPPING__TARGET);

+

+		multiSinglePortMappingEClass = createEClass(MULTI_SINGLE_PORT_MAPPING);

+		createEReference(multiSinglePortMappingEClass, MULTI_SINGLE_PORT_MAPPING__SOURCE);

+		createEReference(multiSinglePortMappingEClass, MULTI_SINGLE_PORT_MAPPING__TARGET);

+

+		// Create enums

+		mappingVisualizationEEnum = createEEnum(MAPPING_VISUALIZATION);

+	}

+

+	/**

+	 * <!-- 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);

+

+		// Create type parameters

+

+		// Set bounds for type parameters

+

+		// Add supertypes to classes

+		compositeRefactoringEClass.getESuperTypes().add(this.getModelRefactoring());

+		refactoringUnitEClass.getESuperTypes().add(this.getNamedElement());

+		modelRefactoringEClass.getESuperTypes().add(this.getNamedElement());

+		modelRefactoringEClass.getESuperTypes().add(this.getDescribedElement());

+		atomicUnitEClass.getESuperTypes().add(this.getRefactoringUnit());

+		compositeUnitEClass.getESuperTypes().add(this.getRefactoringUnit());

+		sequentialUnitEClass.getESuperTypes().add(this.getCompositeUnit());

+		conditionCheckEClass.getESuperTypes().add(this.getNamedElement());

+		conditionCheckEClass.getESuperTypes().add(this.getDescribedElement());

+		conditionalUnitEClass.getESuperTypes().add(this.getCompositeUnit());

+		queuedUnitEClass.getESuperTypes().add(this.getCompositeUnit());

+		singleQueuedUnitEClass.getESuperTypes().add(this.getQueuedUnit());

+		twicedQueuedUnitEClass.getESuperTypes().add(this.getQueuedUnit());

+		cartesianQueuedUnitEClass.getESuperTypes().add(this.getTwicedQueuedUnit());

+		parallelQueuedUnitEClass.getESuperTypes().add(this.getTwicedQueuedUnit());

+		helperUnitEClass.getESuperTypes().add(this.getNamedElement());

+		helperUnitEClass.getESuperTypes().add(this.getDescribedElement());

+		featureUnitEClass.getESuperTypes().add(this.getHelperUnit());

+		singleFeatureUnitEClass.getESuperTypes().add(this.getFeatureUnit());

+		multiFeatureUnitEClass.getESuperTypes().add(this.getFeatureUnit());

+		filterUnitEClass.getESuperTypes().add(this.getHelperUnit());

+		singleFilterUnitEClass.getESuperTypes().add(this.getFilterUnit());

+		multiFilterUnitEClass.getESuperTypes().add(this.getFilterUnit());

+		helperEClass.getESuperTypes().add(this.getNamedElement());

+		helperEClass.getESuperTypes().add(this.getDescribedElement());

+		featureHelperEClass.getESuperTypes().add(this.getHelper());

+		singleFeatureHelperEClass.getESuperTypes().add(this.getFeatureHelper());

+		multiFeatureHelperEClass.getESuperTypes().add(this.getFeatureHelper());

+		filterHelperEClass.getESuperTypes().add(this.getHelper());

+		singleFilterHelperEClass.getESuperTypes().add(this.getFilterHelper());

+		multiFilterHelperEClass.getESuperTypes().add(this.getFilterHelper());

+		portEClass.getESuperTypes().add(this.getNamedElement());

+		portEClass.getESuperTypes().add(this.getDescribedElement());

+		singlePortEClass.getESuperTypes().add(this.getPort());

+		multiPortEClass.getESuperTypes().add(this.getPort());

+		inputPortEClass.getESuperTypes().add(this.getPort());

+		outputPortEClass.getESuperTypes().add(this.getPort());

+		singleInputPortEClass.getESuperTypes().add(this.getSinglePort());

+		singleInputPortEClass.getESuperTypes().add(this.getInputPort());

+		multiInputPortEClass.getESuperTypes().add(this.getMultiPort());

+		multiInputPortEClass.getESuperTypes().add(this.getInputPort());

+		singleOutputPortEClass.getESuperTypes().add(this.getSinglePort());

+		singleOutputPortEClass.getESuperTypes().add(this.getOutputPort());

+		multiOutputPortEClass.getESuperTypes().add(this.getMultiPort());

+		multiOutputPortEClass.getESuperTypes().add(this.getOutputPort());

+		singlePortMappingEClass.getESuperTypes().add(this.getPortMapping());

+		multiPortMappingEClass.getESuperTypes().add(this.getPortMapping());

+		multiSinglePortMappingEClass.getESuperTypes().add(this.getPortMapping());

+

+		// Initialize classes and features; add operations and parameters

+		initEClass(compositeRefactoringEClass, CompositeRefactoring.class, "CompositeRefactoring", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getCompositeRefactoring_MainRefactoringUnit(), this.getRefactoringUnit(), null, "mainRefactoringUnit", null, 1, 1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getCompositeRefactoring_PortMappings(), this.getPortMapping(), null, "portMappings", null, 0, -1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getCompositeRefactoring_ModelRefactorings(), this.getModelRefactoring(), null, "modelRefactorings", null, 0, -1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getCompositeRefactoring_Helper(), this.getHelper(), null, "helper", null, 0, -1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getCompositeRefactoring_MappingVisualization(), this.getMappingVisualization(), "mappingVisualization", "0", 1, 1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getCompositeRefactoring_CustomInitialCondition(), ecorePackage.getEString(), "customInitialCondition", null, 0, 1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getCompositeRefactoring_CustomFinalCondition(), ecorePackage.getEString(), "customFinalCondition", null, 0, 1, CompositeRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(namedElementEClass, NamedElement.class, "NamedElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getNamedElement_Name(), ecorePackage.getEString(), "name", null, 0, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(describedElementEClass, DescribedElement.class, "DescribedElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getDescribedElement_Description(), ecorePackage.getEString(), "description", null, 0, 1, DescribedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(refactoringUnitEClass, RefactoringUnit.class, "RefactoringUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getRefactoringUnit_SeqExecutionOrder(), ecorePackage.getEInt(), "seqExecutionOrder", null, 0, 1, RefactoringUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		addEOperation(refactoringUnitEClass, this.getInputPort(), "getAllInputPorts", 0, -1, IS_UNIQUE, IS_ORDERED);

+

+		EOperation op = addEOperation(refactoringUnitEClass, null, "setSeqExecutionOrder", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEInt(), "seqExecutionOrder", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEBoolean(), "superCall", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		op = addEOperation(refactoringUnitEClass, null, "setName", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEString(), "newName", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEBoolean(), "updateContainer", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(modelRefactoringEClass, ModelRefactoring.class, "ModelRefactoring", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getModelRefactoring_RefId(), ecorePackage.getEString(), "refId", null, 1, 1, ModelRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getModelRefactoring_Label(), ecorePackage.getEString(), "label", null, 1, 1, ModelRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getModelRefactoring_NamespaceUri(), ecorePackage.getEString(), "namespaceUri", null, 1, 1, ModelRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getModelRefactoring_InputPorts(), this.getSingleInputPort(), null, "inputPorts", null, 0, -1, ModelRefactoring.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(atomicUnitEClass, AtomicUnit.class, "AtomicUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getAtomicUnit_InputPorts(), this.getSingleInputPort(), null, "inputPorts", null, 1, -1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getAtomicUnit_UnitId(), ecorePackage.getEString(), "unitId", null, 1, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getAtomicUnit_Label(), ecorePackage.getEString(), "label", null, 1, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getAtomicUnit_NamespaceUri(), ecorePackage.getEString(), "namespaceUri", null, 1, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getAtomicUnit_Type(), ecorePackage.getEString(), "type", "Atomic Unit", 0, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getAtomicUnit_ModelRefactoring(), this.getModelRefactoring(), null, "modelRefactoring", null, 1, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getAtomicUnit_CheckInitialConditionFlag(), ecorePackage.getEBoolean(), "checkInitialConditionFlag", "false", 0, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getAtomicUnit_CheckFinalConditionFlag(), ecorePackage.getEBoolean(), "checkFinalConditionFlag", "false", 0, 1, AtomicUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(compositeUnitEClass, CompositeUnit.class, "CompositeUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(sequentialUnitEClass, SequentialUnit.class, "SequentialUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSequentialUnit_HelperUnits(), this.getHelperUnit(), null, "helperUnits", null, 0, -1, SequentialUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSequentialUnit_RefactoringUnits(), this.getRefactoringUnit(), null, "refactoringUnits", null, 1, -1, SequentialUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSequentialUnit_InputPorts(), this.getInputPort(), null, "inputPorts", null, 1, -1, SequentialUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSequentialUnit_Strict(), ecorePackage.getEBoolean(), "strict", "true", 0, 1, SequentialUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSequentialUnit_Type(), ecorePackage.getEString(), "type", "Sequential Unit", 0, 1, SequentialUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSequentialUnit_LblStrict(), ecorePackage.getEString(), "lblStrict", "strict", 0, 1, SequentialUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		addEOperation(sequentialUnitEClass, null, "updateSeqExecutionOrder", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(conditionCheckEClass, ConditionCheck.class, "ConditionCheck", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getConditionCheck_Type(), ecorePackage.getEString(), "type", "Condition Check", 0, 1, ConditionCheck.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getConditionCheck_Spec(), ecorePackage.getEString(), "spec", null, 0, 1, ConditionCheck.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(conditionalUnitEClass, ConditionalUnit.class, "ConditionalUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getConditionalUnit_If(), this.getConditionCheck(), null, "if", null, 1, 1, ConditionalUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getConditionalUnit_HelperUnits(), this.getHelperUnit(), null, "helperUnits", null, 0, -1, ConditionalUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getConditionalUnit_Then(), this.getRefactoringUnit(), null, "then", null, 1, 1, ConditionalUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getConditionalUnit_Else(), this.getRefactoringUnit(), null, "else", null, 0, 1, ConditionalUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getConditionalUnit_InputPorts(), this.getInputPort(), null, "inputPorts", null, 1, -1, ConditionalUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getConditionalUnit_Type(), ecorePackage.getEString(), "type", "Conditional Unit", 0, 1, ConditionalUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(queuedUnitEClass, QueuedUnit.class, "QueuedUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getQueuedUnit_Strict(), ecorePackage.getEBoolean(), "strict", "true", 0, 1, QueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		addEOperation(queuedUnitEClass, null, "init", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(singleQueuedUnitEClass, SingleQueuedUnit.class, "SingleQueuedUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSingleQueuedUnit_HelperUnits(), this.getHelperUnit(), null, "helperUnits", null, 0, -1, SingleQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleQueuedUnit_RefactoringUnit(), this.getRefactoringUnit(), null, "refactoringUnit", null, 1, 1, SingleQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleQueuedUnit_SingleInputPorts(), this.getSingleInputPort(), null, "singleInputPorts", null, 0, -1, SingleQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleQueuedUnit_MultiInputPort(), this.getMultiInputPort(), null, "multiInputPort", null, 1, 1, SingleQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSingleQueuedUnit_Type(), ecorePackage.getEString(), "type", "Single Queued Unit", 0, 1, SingleQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSingleQueuedUnit_LblStrict(), ecorePackage.getEString(), "lblStrict", "strict", 0, 1, SingleQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(twicedQueuedUnitEClass, TwicedQueuedUnit.class, "TwicedQueuedUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(cartesianQueuedUnitEClass, CartesianQueuedUnit.class, "CartesianQueuedUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getCartesianQueuedUnit_HelperUnits(), this.getHelperUnit(), null, "helperUnits", null, 0, -1, CartesianQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getCartesianQueuedUnit_RefactoringUnit(), this.getRefactoringUnit(), null, "refactoringUnit", null, 1, 1, CartesianQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getCartesianQueuedUnit_SingleInputPorts(), this.getSingleInputPort(), null, "singleInputPorts", null, 0, -1, CartesianQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getCartesianQueuedUnit_MultiInputPorts(), this.getMultiInputPort(), null, "multiInputPorts", null, 2, 2, CartesianQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getCartesianQueuedUnit_Type(), ecorePackage.getEString(), "type", "Cartesian Queued Unit", 0, 1, CartesianQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getCartesianQueuedUnit_LblStrict(), ecorePackage.getEString(), "lblStrict", "strict", 0, 1, CartesianQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(parallelQueuedUnitEClass, ParallelQueuedUnit.class, "ParallelQueuedUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getParallelQueuedUnit_HelperUnits(), this.getHelperUnit(), null, "helperUnits", null, 0, -1, ParallelQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getParallelQueuedUnit_RefactoringUnits(), this.getRefactoringUnit(), null, "refactoringUnits", null, 1, 1, ParallelQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getParallelQueuedUnit_SingleInputPorts(), this.getSingleInputPort(), null, "singleInputPorts", null, 0, -1, ParallelQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getParallelQueuedUnit_MultiInputPorts(), this.getMultiInputPort(), null, "multiInputPorts", null, 2, 2, ParallelQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getParallelQueuedUnit_Type(), ecorePackage.getEString(), "type", "Parallel Queued Unit", 0, 1, ParallelQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getParallelQueuedUnit_LblStrict(), ecorePackage.getEString(), "lblStrict", "strict", 0, 1, ParallelQueuedUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(helperUnitEClass, HelperUnit.class, "HelperUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getHelperUnit_HelperUnitId(), ecorePackage.getEString(), "helperUnitId", null, 1, 1, HelperUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getHelperUnit_NamespaceUri(), ecorePackage.getEString(), "namespaceUri", null, 1, 1, HelperUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		addEOperation(helperUnitEClass, this.getInputPort(), "getInputPort", 1, 1, IS_UNIQUE, IS_ORDERED);

+

+		addEOperation(helperUnitEClass, this.getOutputPort(), "getOutputPort", 1, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(featureUnitEClass, FeatureUnit.class, "FeatureUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(singleFeatureUnitEClass, SingleFeatureUnit.class, "SingleFeatureUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSingleFeatureUnit_InputPort(), this.getSingleInputPort(), null, "inputPort", null, 1, 1, SingleFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleFeatureUnit_SecondaryInputPorts(), this.getMultiInputPort(), null, "secondaryInputPorts", null, 0, -1, SingleFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleFeatureUnit_OutputPort(), this.getSingleOutputPort(), null, "outputPort", null, 1, 1, SingleFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleFeatureUnit_SingleFeatureHelper(), this.getSingleFeatureHelper(), null, "singleFeatureHelper", null, 1, 1, SingleFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSingleFeatureUnit_Type(), ecorePackage.getEString(), "type", "Single Feature Unit", 0, 1, SingleFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiFeatureUnitEClass, MultiFeatureUnit.class, "MultiFeatureUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getMultiFeatureUnit_InputPort(), this.getSingleInputPort(), null, "inputPort", null, 1, 1, MultiFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiFeatureUnit_SecondaryInputPorts(), this.getMultiInputPort(), null, "secondaryInputPorts", null, 0, -1, MultiFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiFeatureUnit_OutputPort(), this.getMultiOutputPort(), null, "outputPort", null, 1, 1, MultiFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiFeatureUnit_MultiFeatureHelper(), this.getMultiFeatureHelper(), null, "multiFeatureHelper", null, 1, 1, MultiFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getMultiFeatureUnit_Type(), ecorePackage.getEString(), "type", "Multi Feature Unit", 0, 1, MultiFeatureUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(filterUnitEClass, FilterUnit.class, "FilterUnit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(singleFilterUnitEClass, SingleFilterUnit.class, "SingleFilterUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSingleFilterUnit_InputPort(), this.getMultiInputPort(), null, "inputPort", null, 1, 1, SingleFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleFilterUnit_OutputPort(), this.getSingleOutputPort(), null, "outputPort", null, 1, 1, SingleFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSingleFilterUnit_SingleFilterHelper(), this.getSingleFilterHelper(), null, "singleFilterHelper", null, 1, 1, SingleFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getSingleFilterUnit_Type(), ecorePackage.getEString(), "type", "Single Filter Unit", 0, 1, SingleFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiFilterUnitEClass, MultiFilterUnit.class, "MultiFilterUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getMultiFilterUnit_InputPort(), this.getMultiInputPort(), null, "inputPort", null, 1, 1, MultiFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiFilterUnit_OutputPort(), this.getMultiOutputPort(), null, "outputPort", null, 1, 1, MultiFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiFilterUnit_MultiFilterHelper(), this.getMultiFilterHelper(), null, "multiFilterHelper", null, 1, 1, MultiFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getMultiFilterUnit_Type(), ecorePackage.getEString(), "type", "Multi Filter Unit", 0, 1, MultiFilterUnit.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(helperEClass, Helper.class, "Helper", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getHelper_HelperId(), ecorePackage.getEString(), "helperId", null, 1, 1, Helper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEAttribute(getHelper_NamespaceUri(), ecorePackage.getEString(), "namespaceUri", null, 1, 1, Helper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(featureHelperEClass, FeatureHelper.class, "FeatureHelper", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getFeatureHelper_InputPort(), this.getSingleInputPort(), null, "inputPort", null, 1, 1, FeatureHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getFeatureHelper_SecondaryInputPorts(), this.getMultiInputPort(), null, "secondaryInputPorts", null, 0, -1, FeatureHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(singleFeatureHelperEClass, SingleFeatureHelper.class, "SingleFeatureHelper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSingleFeatureHelper_OutputPort(), this.getSingleOutputPort(), null, "outputPort", null, 1, 1, SingleFeatureHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiFeatureHelperEClass, MultiFeatureHelper.class, "MultiFeatureHelper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getMultiFeatureHelper_OutputPort(), this.getMultiOutputPort(), null, "outputPort", null, 1, 1, MultiFeatureHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(filterHelperEClass, FilterHelper.class, "FilterHelper", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getFilterHelper_InputPort(), this.getMultiInputPort(), null, "inputPort", null, 1, 1, FilterHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(singleFilterHelperEClass, SingleFilterHelper.class, "SingleFilterHelper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSingleFilterHelper_OutputPort(), this.getSingleOutputPort(), null, "outputPort", null, 1, 1, SingleFilterHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiFilterHelperEClass, MultiFilterHelper.class, "MultiFilterHelper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getMultiFilterHelper_OutputPort(), this.getMultiOutputPort(), null, "outputPort", null, 1, 1, MultiFilterHelper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(portEClass, Port.class, "Port", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getPort_Type(), ecorePackage.getEJavaClass(), "type", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		op = addEOperation(portEClass, null, "setType", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEJavaClass(), "newType", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEBoolean(), "initiator", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		op = addEOperation(portEClass, null, "updatePortName", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEString(), "singularPortName", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		addEOperation(portEClass, ecorePackage.getEString(), "getSingularPortName", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(singlePortEClass, SinglePort.class, "SinglePort", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getSinglePort_Value(), ecorePackage.getEJavaObject(), "value", null, 0, 1, SinglePort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiPortEClass, MultiPort.class, "MultiPort", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEAttribute(getMultiPort_Value(), ecorePackage.getEJavaObject(), "value", null, 0, -1, MultiPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(inputPortEClass, InputPort.class, "InputPort", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		addEOperation(inputPortEClass, ecorePackage.getEBooleanObject(), "isMappingTarget", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		addEOperation(inputPortEClass, ecorePackage.getEBooleanObject(), "isRootPort", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(outputPortEClass, OutputPort.class, "OutputPort", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(singleInputPortEClass, SingleInputPort.class, "SingleInputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(multiInputPortEClass, MultiInputPort.class, "MultiInputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(singleOutputPortEClass, SingleOutputPort.class, "SingleOutputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(multiOutputPortEClass, MultiOutputPort.class, "MultiOutputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		initEClass(portMappingEClass, PortMapping.class, "PortMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+

+		addEOperation(portMappingEClass, this.getPort(), "getSource", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		addEOperation(portMappingEClass, this.getInputPort(), "getTarget", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		op = addEOperation(portMappingEClass, null, "updatePortTypesAndNames", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEJavaClass(), "type", 0, 1, IS_UNIQUE, IS_ORDERED);

+		addEParameter(op, ecorePackage.getEString(), "singularPortName", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		addEOperation(portMappingEClass, null, "updateMappingNumber", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		addEOperation(portMappingEClass, null, "updateVisualization", 0, 1, IS_UNIQUE, IS_ORDERED);

+

+		initEClass(singlePortMappingEClass, SinglePortMapping.class, "SinglePortMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getSinglePortMapping_Source(), this.getSinglePort(), null, "source", null, 0, 1, SinglePortMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getSinglePortMapping_Target(), this.getSingleInputPort(), null, "target", null, 0, 1, SinglePortMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiPortMappingEClass, MultiPortMapping.class, "MultiPortMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getMultiPortMapping_Source(), this.getMultiPort(), null, "source", null, 0, 1, MultiPortMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiPortMapping_Target(), this.getMultiInputPort(), null, "target", null, 0, 1, MultiPortMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		initEClass(multiSinglePortMappingEClass, MultiSinglePortMapping.class, "MultiSinglePortMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+		initEReference(getMultiSinglePortMapping_Source(), this.getMultiPort(), null, "source", null, 0, 1, MultiSinglePortMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+		initEReference(getMultiSinglePortMapping_Target(), this.getSingleInputPort(), null, "target", null, 0, 1, MultiSinglePortMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+

+		// Initialize enums and add enum literals

+		initEEnum(mappingVisualizationEEnum, MappingVisualization.class, "MappingVisualization");

+		addEEnumLiteral(mappingVisualizationEEnum, MappingVisualization.ARROWS);

+		addEEnumLiteral(mappingVisualizationEEnum, MappingVisualization.COLORED_PORTS);

+		addEEnumLiteral(mappingVisualizationEEnum, MappingVisualization.INDICES);

+		addEEnumLiteral(mappingVisualizationEEnum, MappingVisualization.ARROWS_AND_COLORED_PORTS);

+		addEEnumLiteral(mappingVisualizationEEnum, MappingVisualization.ARROWS_AND_INDICES);

+

+		// Create resource

+		createResource(eNS_URI);

+

+		// Create annotations

+		// gmf

+		createGmfAnnotations();

+		// gmf.diagram

+		createGmf_1Annotations();

+		// gmf.node

+		createGmf_2Annotations();

+		// gmf.affixed

+		createGmf_3Annotations();

+		// gmf.compartment

+		createGmf_4Annotations();

+		// gmf.link

+		createGmf_5Annotations();

+	}

+

+	/**

+	 * Initializes the annotations for <b>gmf</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createGmfAnnotations() {

+		String source = "gmf";		

+		addAnnotation

+		  (this, 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });																																																		

+	}

+

+	/**

+	 * Initializes the annotations for <b>gmf.diagram</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createGmf_1Annotations() {

+		String source = "gmf.diagram";			

+		addAnnotation

+		  (compositeRefactoringEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "onefile", "false"

+		   });																																																	

+	}

+

+	/**

+	 * Initializes the annotations for <b>gmf.node</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createGmf_2Annotations() {

+		String source = "gmf.node";				

+		addAnnotation

+		  (atomicUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "label,type",

+			 "label.pattern", "{0}:{1}"

+		   });			

+		addAnnotation

+		  (sequentialUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type,lblStrict",

+			 "label.pattern", "{0}:{1} -{2}-"

+		   });					

+		addAnnotation

+		  (conditionCheckEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type,spec",

+			 "label.pattern", "{0}:{1} -{2}-"

+		   });		

+		addAnnotation

+		  (conditionalUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type",

+			 "label.pattern", "{0}:{1}"

+		   });							

+		addAnnotation

+		  (singleQueuedUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type,lblStrict",

+			 "label.pattern", "{0}:{1} -{2}-"

+		   });						

+		addAnnotation

+		  (cartesianQueuedUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type,lblStrict",

+			 "label.pattern", "{0}:{1} -{2}-"

+		   });						

+		addAnnotation

+		  (parallelQueuedUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type,lblStrict",

+			 "label.pattern", "{0}:{1} -{2}-"

+		   });						

+		addAnnotation

+		  (singleFeatureUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type",

+			 "label.pattern", "{0}:{1}"

+		   });					

+		addAnnotation

+		  (multiFeatureUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type",

+			 "label.pattern", "{0}:{1}"

+		   });					

+		addAnnotation

+		  (singleFilterUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type",

+			 "label.pattern", "{0}:{1}"

+		   });				

+		addAnnotation

+		  (multiFilterUnitEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label.icon", "false",

+			 "label", "name,type",

+			 "label.pattern", "{0}:{1}"

+		   });				

+		addAnnotation

+		  (portEClass, 

+		   source, 

+		   new String[] {

+			 "foo", "bar",

+			 "label", "name,type",

+			 "label.icon", "false",

+			 "label.placement", "external",

+			 "label.pattern", "{0}:{1}"

+		   });		

+		addAnnotation

+		  (multiPortEClass, 

+		   source, 

+		   new String[] {

+			 "border.color", "255,0,0",

+			 "border.width", "10"

+		   });		

+		addAnnotation

+		  (inputPortEClass, 

+		   source, 

+		   new String[] {

+			 "figure", "rectangle",

+			 "size", "20,20"

+		   });		

+		addAnnotation

+		  (outputPortEClass, 

+		   source, 

+		   new String[] {

+			 "figure", "ellipse",

+			 "size", "20,20"

+		   });			

+	}

+

+	/**

+	 * Initializes the annotations for <b>gmf.affixed</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createGmf_3Annotations() {

+		String source = "gmf.affixed";					

+		addAnnotation

+		  (getAtomicUnit_InputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getSequentialUnit_InputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });								

+		addAnnotation

+		  (getConditionalUnit_InputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getSingleQueuedUnit_SingleInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getSingleQueuedUnit_MultiInputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getCartesianQueuedUnit_SingleInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getCartesianQueuedUnit_MultiInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getParallelQueuedUnit_SingleInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getParallelQueuedUnit_MultiInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });			

+		addAnnotation

+		  (getSingleFeatureUnit_InputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getSingleFeatureUnit_SecondaryInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getSingleFeatureUnit_OutputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });			

+		addAnnotation

+		  (getMultiFeatureUnit_InputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getMultiFeatureUnit_SecondaryInputPorts(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getMultiFeatureUnit_OutputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });			

+		addAnnotation

+		  (getSingleFilterUnit_InputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getSingleFilterUnit_OutputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });			

+		addAnnotation

+		  (getMultiFilterUnit_InputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getMultiFilterUnit_OutputPort(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });							

+	}

+

+	/**

+	 * Initializes the annotations for <b>gmf.compartment</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createGmf_4Annotations() {

+		String source = "gmf.compartment";							

+		addAnnotation

+		  (getSequentialUnit_HelperUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getSequentialUnit_RefactoringUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getConditionalUnit_If(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getConditionalUnit_HelperUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getConditionalUnit_Then(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getConditionalUnit_Else(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });				

+		addAnnotation

+		  (getSingleQueuedUnit_HelperUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getSingleQueuedUnit_RefactoringUnit(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getCartesianQueuedUnit_HelperUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getCartesianQueuedUnit_RefactoringUnit(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });					

+		addAnnotation

+		  (getParallelQueuedUnit_HelperUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });		

+		addAnnotation

+		  (getParallelQueuedUnit_RefactoringUnits(), 

+		   source, 

+		   new String[] {

+			 "foo", "bar"

+		   });																							

+	}

+

+	/**

+	 * Initializes the annotations for <b>gmf.link</b>.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected void createGmf_5Annotations() {

+		String source = "gmf.link";																																																		

+		addAnnotation

+		  (singlePortMappingEClass, 

+		   source, 

+		   new String[] {

+			 "source", "source",

+			 "target", "target",

+			 "style", "dot",

+			 "width", "2",

+			 "target.decoration", "arrow"

+		   });		

+		addAnnotation

+		  (multiPortMappingEClass, 

+		   source, 

+		   new String[] {

+			 "source", "source",

+			 "target", "target",

+			 "style", "dot",

+			 "width", "2",

+			 "target.decoration", "arrow"

+		   });		

+		addAnnotation

+		  (multiSinglePortMappingEClass, 

+		   source, 

+		   new String[] {

+			 "source", "source",

+			 "target", "target",

+			 "style", "dot",

+			 "width", "2",

+			 "target.decoration", "arrow",

+			 "tool.small.bundle", "name"

+		   });

+	}

+

+} //ComrelPackageImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/ConditionCheckImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ConditionCheckImpl.java
new file mode 100644
index 0000000..0895a90
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ConditionCheckImpl.java
@@ -0,0 +1,344 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.ConditionCheck;

+import comrel.DescribedElement;

+

+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.EObjectImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Condition Check</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.ConditionCheckImpl#getName <em>Name</em>}</li>

+ *   <li>{@link comrel.impl.ConditionCheckImpl#getDescription <em>Description</em>}</li>

+ *   <li>{@link comrel.impl.ConditionCheckImpl#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.impl.ConditionCheckImpl#getSpec <em>Spec</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class ConditionCheckImpl extends EObjectImpl implements ConditionCheck {

+	/**

+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String name = NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String DESCRIPTION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected String description = DESCRIPTION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Condition Check";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getSpec() <em>Spec</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSpec()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String SPEC_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getSpec() <em>Spec</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSpec()

+	 * @generated

+	 * @ordered

+	 */

+	protected String spec = SPEC_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ConditionCheckImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.CONDITION_CHECK;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+		return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName) {

+		String oldName = name;

+		name = newName;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITION_CHECK__NAME, oldName, name));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getDescription() {

+		return description;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setDescription(String newDescription) {

+		String oldDescription = description;

+		description = newDescription;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITION_CHECK__DESCRIPTION, oldDescription, description));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getSpec() {

+		return spec;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSpec(String newSpec) {

+		String oldSpec = spec;

+		spec = newSpec;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITION_CHECK__SPEC, oldSpec, spec));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.CONDITION_CHECK__NAME:

+				return getName();

+			case ComrelPackage.CONDITION_CHECK__DESCRIPTION:

+				return getDescription();

+			case ComrelPackage.CONDITION_CHECK__TYPE:

+				return getType();

+			case ComrelPackage.CONDITION_CHECK__SPEC:

+				return getSpec();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.CONDITION_CHECK__NAME:

+				setName((String)newValue);

+				return;

+			case ComrelPackage.CONDITION_CHECK__DESCRIPTION:

+				setDescription((String)newValue);

+				return;

+			case ComrelPackage.CONDITION_CHECK__SPEC:

+				setSpec((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.CONDITION_CHECK__NAME:

+				setName(NAME_EDEFAULT);

+				return;

+			case ComrelPackage.CONDITION_CHECK__DESCRIPTION:

+				setDescription(DESCRIPTION_EDEFAULT);

+				return;

+			case ComrelPackage.CONDITION_CHECK__SPEC:

+				setSpec(SPEC_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.CONDITION_CHECK__NAME:

+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

+			case ComrelPackage.CONDITION_CHECK__DESCRIPTION:

+				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);

+			case ComrelPackage.CONDITION_CHECK__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+			case ComrelPackage.CONDITION_CHECK__SPEC:

+				return SPEC_EDEFAULT == null ? spec != null : !SPEC_EDEFAULT.equals(spec);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (derivedFeatureID) {

+				case ComrelPackage.CONDITION_CHECK__DESCRIPTION: return ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (baseFeatureID) {

+				case ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION: return ComrelPackage.CONDITION_CHECK__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (name: ");

+		result.append(name);

+		result.append(", description: ");

+		result.append(description);

+		result.append(", type: ");

+		result.append(type);

+		result.append(", spec: ");

+		result.append(spec);

+		result.append(')');

+		return result.toString();

+	}

+

+} //ConditionCheckImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/ConditionalUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ConditionalUnitImpl.java
new file mode 100644
index 0000000..ffd3caa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ConditionalUnitImpl.java
@@ -0,0 +1,444 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.ConditionCheck;

+import comrel.ConditionalUnit;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.RefactoringUnit;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Conditional Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.ConditionalUnitImpl#getIf <em>If</em>}</li>

+ *   <li>{@link comrel.impl.ConditionalUnitImpl#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.impl.ConditionalUnitImpl#getThen <em>Then</em>}</li>

+ *   <li>{@link comrel.impl.ConditionalUnitImpl#getElse <em>Else</em>}</li>

+ *   <li>{@link comrel.impl.ConditionalUnitImpl#getInputPorts <em>Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.ConditionalUnitImpl#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class ConditionalUnitImpl extends CompositeUnitImpl implements ConditionalUnit {

+	/**

+	 * The cached value of the '{@link #getIf() <em>If</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getIf()

+	 * @generated

+	 * @ordered

+	 */

+	protected ConditionCheck if_;

+

+	/**

+	 * The cached value of the '{@link #getHelperUnits() <em>Helper Units</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<HelperUnit> helperUnits;

+

+	/**

+	 * The cached value of the '{@link #getThen() <em>Then</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getThen()

+	 * @generated

+	 * @ordered

+	 */

+	protected RefactoringUnit then;

+

+	/**

+	 * The cached value of the '{@link #getElse() <em>Else</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getElse()

+	 * @generated

+	 * @ordered

+	 */

+	protected RefactoringUnit else_;

+

+	/**

+	 * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<InputPort> inputPorts;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Conditional Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ConditionalUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.CONDITIONAL_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ConditionCheck getIf() {

+		return if_;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetIf(ConditionCheck newIf, NotificationChain msgs) {

+		ConditionCheck oldIf = if_;

+		if_ = newIf;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITIONAL_UNIT__IF, oldIf, newIf);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setIf(ConditionCheck newIf) {

+		if (newIf != if_) {

+			NotificationChain msgs = null;

+			if (if_ != null)

+				msgs = ((InternalEObject)if_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CONDITIONAL_UNIT__IF, null, msgs);

+			if (newIf != null)

+				msgs = ((InternalEObject)newIf).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CONDITIONAL_UNIT__IF, null, msgs);

+			msgs = basicSetIf(newIf, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITIONAL_UNIT__IF, newIf, newIf));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<HelperUnit> getHelperUnits() {

+		if (helperUnits == null) {

+			helperUnits = new EObjectContainmentEList<HelperUnit>(HelperUnit.class, this, ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS);

+		}

+		return helperUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnit getThen() {

+		return then;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetThen(RefactoringUnit newThen, NotificationChain msgs) {

+		RefactoringUnit oldThen = then;

+		then = newThen;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITIONAL_UNIT__THEN, oldThen, newThen);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setThen(RefactoringUnit newThen) {

+		if (newThen != then) {

+			NotificationChain msgs = null;

+			if (then != null)

+				msgs = ((InternalEObject)then).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CONDITIONAL_UNIT__THEN, null, msgs);

+			if (newThen != null)

+				msgs = ((InternalEObject)newThen).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CONDITIONAL_UNIT__THEN, null, msgs);

+			msgs = basicSetThen(newThen, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITIONAL_UNIT__THEN, newThen, newThen));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnit getElse() {

+		return else_;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetElse(RefactoringUnit newElse, NotificationChain msgs) {

+		RefactoringUnit oldElse = else_;

+		else_ = newElse;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITIONAL_UNIT__ELSE, oldElse, newElse);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setElse(RefactoringUnit newElse) {

+		if (newElse != else_) {

+			NotificationChain msgs = null;

+			if (else_ != null)

+				msgs = ((InternalEObject)else_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CONDITIONAL_UNIT__ELSE, null, msgs);

+			if (newElse != null)

+				msgs = ((InternalEObject)newElse).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.CONDITIONAL_UNIT__ELSE, null, msgs);

+			msgs = basicSetElse(newElse, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.CONDITIONAL_UNIT__ELSE, newElse, newElse));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<InputPort> getInputPorts() {

+		if (inputPorts == null) {

+			inputPorts = new EObjectContainmentEList<InputPort>(InputPort.class, this, ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS);

+		}

+		return inputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.CONDITIONAL_UNIT__IF:

+				return basicSetIf(null, msgs);

+			case ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS:

+				return ((InternalEList<?>)getHelperUnits()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.CONDITIONAL_UNIT__THEN:

+				return basicSetThen(null, msgs);

+			case ComrelPackage.CONDITIONAL_UNIT__ELSE:

+				return basicSetElse(null, msgs);

+			case ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS:

+				return ((InternalEList<?>)getInputPorts()).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 ComrelPackage.CONDITIONAL_UNIT__IF:

+				return getIf();

+			case ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS:

+				return getHelperUnits();

+			case ComrelPackage.CONDITIONAL_UNIT__THEN:

+				return getThen();

+			case ComrelPackage.CONDITIONAL_UNIT__ELSE:

+				return getElse();

+			case ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS:

+				return getInputPorts();

+			case ComrelPackage.CONDITIONAL_UNIT__TYPE:

+				return getType();

+		}

+		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 ComrelPackage.CONDITIONAL_UNIT__IF:

+				setIf((ConditionCheck)newValue);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				getHelperUnits().addAll((Collection<? extends HelperUnit>)newValue);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__THEN:

+				setThen((RefactoringUnit)newValue);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__ELSE:

+				setElse((RefactoringUnit)newValue);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS:

+				getInputPorts().clear();

+				getInputPorts().addAll((Collection<? extends InputPort>)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.CONDITIONAL_UNIT__IF:

+				setIf((ConditionCheck)null);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__THEN:

+				setThen((RefactoringUnit)null);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__ELSE:

+				setElse((RefactoringUnit)null);

+				return;

+			case ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS:

+				getInputPorts().clear();

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.CONDITIONAL_UNIT__IF:

+				return if_ != null;

+			case ComrelPackage.CONDITIONAL_UNIT__HELPER_UNITS:

+				return helperUnits != null && !helperUnits.isEmpty();

+			case ComrelPackage.CONDITIONAL_UNIT__THEN:

+				return then != null;

+			case ComrelPackage.CONDITIONAL_UNIT__ELSE:

+				return else_ != null;

+			case ComrelPackage.CONDITIONAL_UNIT__INPUT_PORTS:

+				return inputPorts != null && !inputPorts.isEmpty();

+			case ComrelPackage.CONDITIONAL_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

+} //ConditionalUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/FeatureHelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FeatureHelperImpl.java
new file mode 100644
index 0000000..a7ea61f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FeatureHelperImpl.java
@@ -0,0 +1,224 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.FeatureHelper;

+import comrel.MultiInputPort;

+import comrel.SingleInputPort;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Feature Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.FeatureHelperImpl#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.impl.FeatureHelperImpl#getSecondaryInputPorts <em>Secondary Input Ports</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class FeatureHelperImpl extends HelperImpl implements FeatureHelper {

+	/**

+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleInputPort inputPort;

+

+	/**

+	 * The cached value of the '{@link #getSecondaryInputPorts() <em>Secondary Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSecondaryInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<MultiInputPort> secondaryInputPorts;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected FeatureHelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.FEATURE_HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort getInputPort() {

+		return inputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetInputPort(SingleInputPort newInputPort, NotificationChain msgs) {

+		SingleInputPort oldInputPort = inputPort;

+		inputPort = newInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.FEATURE_HELPER__INPUT_PORT, oldInputPort, newInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setInputPort(SingleInputPort newInputPort) {

+		if (newInputPort != inputPort) {

+			NotificationChain msgs = null;

+			if (inputPort != null)

+				msgs = ((InternalEObject)inputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.FEATURE_HELPER__INPUT_PORT, null, msgs);

+			if (newInputPort != null)

+				msgs = ((InternalEObject)newInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.FEATURE_HELPER__INPUT_PORT, null, msgs);

+			msgs = basicSetInputPort(newInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.FEATURE_HELPER__INPUT_PORT, newInputPort, newInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<MultiInputPort> getSecondaryInputPorts() {

+		if (secondaryInputPorts == null) {

+			secondaryInputPorts = new EObjectContainmentEList<MultiInputPort>(MultiInputPort.class, this, ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS);

+		}

+		return secondaryInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.FEATURE_HELPER__INPUT_PORT:

+				return basicSetInputPort(null, msgs);

+			case ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS:

+				return ((InternalEList<?>)getSecondaryInputPorts()).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 ComrelPackage.FEATURE_HELPER__INPUT_PORT:

+				return getInputPort();

+			case ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS:

+				return getSecondaryInputPorts();

+		}

+		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 ComrelPackage.FEATURE_HELPER__INPUT_PORT:

+				setInputPort((SingleInputPort)newValue);

+				return;

+			case ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS:

+				getSecondaryInputPorts().clear();

+				getSecondaryInputPorts().addAll((Collection<? extends MultiInputPort>)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.FEATURE_HELPER__INPUT_PORT:

+				setInputPort((SingleInputPort)null);

+				return;

+			case ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS:

+				getSecondaryInputPorts().clear();

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.FEATURE_HELPER__INPUT_PORT:

+				return inputPort != null;

+			case ComrelPackage.FEATURE_HELPER__SECONDARY_INPUT_PORTS:

+				return secondaryInputPorts != null && !secondaryInputPorts.isEmpty();

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //FeatureHelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/FeatureUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FeatureUnitImpl.java
new file mode 100644
index 0000000..e60e9b3
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FeatureUnitImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.FeatureUnit;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Feature Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class FeatureUnitImpl extends HelperUnitImpl implements FeatureUnit {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected FeatureUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.FEATURE_UNIT;

+	}

+

+} //FeatureUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/FilterHelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FilterHelperImpl.java
new file mode 100644
index 0000000..46e3bc6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FilterHelperImpl.java
@@ -0,0 +1,179 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.FilterHelper;

+import comrel.MultiInputPort;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Filter Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.FilterHelperImpl#getInputPort <em>Input Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class FilterHelperImpl extends HelperImpl implements FilterHelper {

+	/**

+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiInputPort inputPort;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected FilterHelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.FILTER_HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort getInputPort() {

+		return inputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetInputPort(MultiInputPort newInputPort, NotificationChain msgs) {

+		MultiInputPort oldInputPort = inputPort;

+		inputPort = newInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.FILTER_HELPER__INPUT_PORT, oldInputPort, newInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setInputPort(MultiInputPort newInputPort) {

+		if (newInputPort != inputPort) {

+			NotificationChain msgs = null;

+			if (inputPort != null)

+				msgs = ((InternalEObject)inputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.FILTER_HELPER__INPUT_PORT, null, msgs);

+			if (newInputPort != null)

+				msgs = ((InternalEObject)newInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.FILTER_HELPER__INPUT_PORT, null, msgs);

+			msgs = basicSetInputPort(newInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.FILTER_HELPER__INPUT_PORT, newInputPort, newInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.FILTER_HELPER__INPUT_PORT:

+				return basicSetInputPort(null, 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 ComrelPackage.FILTER_HELPER__INPUT_PORT:

+				return getInputPort();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.FILTER_HELPER__INPUT_PORT:

+				setInputPort((MultiInputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.FILTER_HELPER__INPUT_PORT:

+				setInputPort((MultiInputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.FILTER_HELPER__INPUT_PORT:

+				return inputPort != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //FilterHelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/FilterUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FilterUnitImpl.java
new file mode 100644
index 0000000..90ea4fd
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/FilterUnitImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.FilterUnit;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Filter Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class FilterUnitImpl extends HelperUnitImpl implements FilterUnit {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected FilterUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.FILTER_UNIT;

+	}

+

+} //FilterUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/HelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/HelperImpl.java
new file mode 100644
index 0000000..63753e7
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/HelperImpl.java
@@ -0,0 +1,367 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.DescribedElement;

+import comrel.Helper;

+import comrel.util.ComrelUtil;

+

+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.EObjectImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.HelperImpl#getName <em>Name</em>}</li>

+ *   <li>{@link comrel.impl.HelperImpl#getDescription <em>Description</em>}</li>

+ *   <li>{@link comrel.impl.HelperImpl#getHelperId <em>Helper Id</em>}</li>

+ *   <li>{@link comrel.impl.HelperImpl#getNamespaceUri <em>Namespace Uri</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class HelperImpl extends EObjectImpl implements Helper {

+	/**

+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String name = NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String DESCRIPTION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected String description = DESCRIPTION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getHelperId() <em>Helper Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperId()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String HELPER_ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getHelperId() <em>Helper Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperId()

+	 * @generated

+	 * @ordered

+	 */

+	protected String helperId = HELPER_ID_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAMESPACE_URI_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected String namespaceUri = NAMESPACE_URI_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected HelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+		return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldName = name;

+			name = newName;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER__NAME, oldName, name));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getDescription() {

+		return description;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setDescription(String newDescription) {

+		String oldDescription = description;

+		description = newDescription;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER__DESCRIPTION, oldDescription, description));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getHelperId() {

+		return helperId;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setHelperId(String newHelperId) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldHelperId = helperId;

+			helperId = newHelperId;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER__HELPER_ID, oldHelperId, helperId));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getNamespaceUri() {

+		return namespaceUri;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setNamespaceUri(String newNamespaceUri) {

+		String oldNamespaceUri = namespaceUri;

+		namespaceUri = newNamespaceUri;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER__NAMESPACE_URI, oldNamespaceUri, namespaceUri));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.HELPER__NAME:

+				return getName();

+			case ComrelPackage.HELPER__DESCRIPTION:

+				return getDescription();

+			case ComrelPackage.HELPER__HELPER_ID:

+				return getHelperId();

+			case ComrelPackage.HELPER__NAMESPACE_URI:

+				return getNamespaceUri();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.HELPER__NAME:

+				setName((String)newValue);

+				return;

+			case ComrelPackage.HELPER__DESCRIPTION:

+				setDescription((String)newValue);

+				return;

+			case ComrelPackage.HELPER__HELPER_ID:

+				setHelperId((String)newValue);

+				return;

+			case ComrelPackage.HELPER__NAMESPACE_URI:

+				setNamespaceUri((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.HELPER__NAME:

+				setName(NAME_EDEFAULT);

+				return;

+			case ComrelPackage.HELPER__DESCRIPTION:

+				setDescription(DESCRIPTION_EDEFAULT);

+				return;

+			case ComrelPackage.HELPER__HELPER_ID:

+				setHelperId(HELPER_ID_EDEFAULT);

+				return;

+			case ComrelPackage.HELPER__NAMESPACE_URI:

+				setNamespaceUri(NAMESPACE_URI_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.HELPER__NAME:

+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

+			case ComrelPackage.HELPER__DESCRIPTION:

+				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);

+			case ComrelPackage.HELPER__HELPER_ID:

+				return HELPER_ID_EDEFAULT == null ? helperId != null : !HELPER_ID_EDEFAULT.equals(helperId);

+			case ComrelPackage.HELPER__NAMESPACE_URI:

+				return NAMESPACE_URI_EDEFAULT == null ? namespaceUri != null : !NAMESPACE_URI_EDEFAULT.equals(namespaceUri);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (derivedFeatureID) {

+				case ComrelPackage.HELPER__DESCRIPTION: return ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (baseFeatureID) {

+				case ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION: return ComrelPackage.HELPER__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (name: ");

+		result.append(name);

+		result.append(", description: ");

+		result.append(description);

+		result.append(", helperId: ");

+		result.append(helperId);

+		result.append(", namespaceUri: ");

+		result.append(namespaceUri);

+		result.append(')');

+		return result.toString();

+	}

+

+} //HelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/HelperUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/HelperUnitImpl.java
new file mode 100644
index 0000000..03aaf37
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/HelperUnitImpl.java
@@ -0,0 +1,393 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.DescribedElement;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.OutputPort;

+import comrel.util.ComrelUtil;

+

+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.EObjectImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Helper Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.HelperUnitImpl#getName <em>Name</em>}</li>

+ *   <li>{@link comrel.impl.HelperUnitImpl#getDescription <em>Description</em>}</li>

+ *   <li>{@link comrel.impl.HelperUnitImpl#getHelperUnitId <em>Helper Unit Id</em>}</li>

+ *   <li>{@link comrel.impl.HelperUnitImpl#getNamespaceUri <em>Namespace Uri</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class HelperUnitImpl extends EObjectImpl implements HelperUnit {

+	/**

+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String name = NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String DESCRIPTION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected String description = DESCRIPTION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getHelperUnitId() <em>Helper Unit Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnitId()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String HELPER_UNIT_ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getHelperUnitId() <em>Helper Unit Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnitId()

+	 * @generated

+	 * @ordered

+	 */

+	protected String helperUnitId = HELPER_UNIT_ID_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAMESPACE_URI_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected String namespaceUri = NAMESPACE_URI_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected HelperUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.HELPER_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+		return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldName = name;

+			name = newName;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER_UNIT__NAME, oldName, name));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getDescription() {

+		return description;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setDescription(String newDescription) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldDescription = description;

+			description = newDescription;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER_UNIT__DESCRIPTION, oldDescription, description));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getHelperUnitId() {

+		return helperUnitId;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setHelperUnitId(String newHelperUnitId) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldHelperUnitId = helperUnitId;

+			helperUnitId = newHelperUnitId;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER_UNIT__HELPER_UNIT_ID, oldHelperUnitId, helperUnitId));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getNamespaceUri() {

+		return namespaceUri;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setNamespaceUri(String newNamespaceUri) {

+		String oldNamespaceUri = namespaceUri;

+		namespaceUri = newNamespaceUri;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.HELPER_UNIT__NAMESPACE_URI, oldNamespaceUri, namespaceUri));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public InputPort getInputPort() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public OutputPort getOutputPort() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.HELPER_UNIT__NAME:

+				return getName();

+			case ComrelPackage.HELPER_UNIT__DESCRIPTION:

+				return getDescription();

+			case ComrelPackage.HELPER_UNIT__HELPER_UNIT_ID:

+				return getHelperUnitId();

+			case ComrelPackage.HELPER_UNIT__NAMESPACE_URI:

+				return getNamespaceUri();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.HELPER_UNIT__NAME:

+				setName((String)newValue);

+				return;

+			case ComrelPackage.HELPER_UNIT__DESCRIPTION:

+				setDescription((String)newValue);

+				return;

+			case ComrelPackage.HELPER_UNIT__HELPER_UNIT_ID:

+				setHelperUnitId((String)newValue);

+				return;

+			case ComrelPackage.HELPER_UNIT__NAMESPACE_URI:

+				setNamespaceUri((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.HELPER_UNIT__NAME:

+				setName(NAME_EDEFAULT);

+				return;

+			case ComrelPackage.HELPER_UNIT__DESCRIPTION:

+				setDescription(DESCRIPTION_EDEFAULT);

+				return;

+			case ComrelPackage.HELPER_UNIT__HELPER_UNIT_ID:

+				setHelperUnitId(HELPER_UNIT_ID_EDEFAULT);

+				return;

+			case ComrelPackage.HELPER_UNIT__NAMESPACE_URI:

+				setNamespaceUri(NAMESPACE_URI_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.HELPER_UNIT__NAME:

+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

+			case ComrelPackage.HELPER_UNIT__DESCRIPTION:

+				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);

+			case ComrelPackage.HELPER_UNIT__HELPER_UNIT_ID:

+				return HELPER_UNIT_ID_EDEFAULT == null ? helperUnitId != null : !HELPER_UNIT_ID_EDEFAULT.equals(helperUnitId);

+			case ComrelPackage.HELPER_UNIT__NAMESPACE_URI:

+				return NAMESPACE_URI_EDEFAULT == null ? namespaceUri != null : !NAMESPACE_URI_EDEFAULT.equals(namespaceUri);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (derivedFeatureID) {

+				case ComrelPackage.HELPER_UNIT__DESCRIPTION: return ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (baseFeatureID) {

+				case ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION: return ComrelPackage.HELPER_UNIT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (name: ");

+		result.append(name);

+		result.append(", description: ");

+		result.append(description);

+		result.append(", helperUnitId: ");

+		result.append(helperUnitId);

+		result.append(", namespaceUri: ");

+		result.append(namespaceUri);

+		result.append(')');

+		return result.toString();

+	}

+

+} //HelperUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/InputPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/InputPortImpl.java
new file mode 100644
index 0000000..9312a2d
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/InputPortImpl.java
@@ -0,0 +1,65 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.InputPort;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Input Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class InputPortImpl extends PortImpl implements InputPort {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected InputPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.INPUT_PORT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Boolean isMappingTarget() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Boolean isRootPort() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+} //InputPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/ModelRefactoringImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ModelRefactoringImpl.java
new file mode 100644
index 0000000..73ef092
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ModelRefactoringImpl.java
@@ -0,0 +1,485 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.ComrelPackage;

+import comrel.DescribedElement;

+import comrel.ModelRefactoring;

+import comrel.SingleInputPort;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Model Refactoring</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.ModelRefactoringImpl#getName <em>Name</em>}</li>

+ *   <li>{@link comrel.impl.ModelRefactoringImpl#getDescription <em>Description</em>}</li>

+ *   <li>{@link comrel.impl.ModelRefactoringImpl#getRefId <em>Ref Id</em>}</li>

+ *   <li>{@link comrel.impl.ModelRefactoringImpl#getLabel <em>Label</em>}</li>

+ *   <li>{@link comrel.impl.ModelRefactoringImpl#getNamespaceUri <em>Namespace Uri</em>}</li>

+ *   <li>{@link comrel.impl.ModelRefactoringImpl#getInputPorts <em>Input Ports</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class ModelRefactoringImpl extends EObjectImpl implements ModelRefactoring {

+	/**

+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String name = NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String DESCRIPTION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected String description = DESCRIPTION_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getRefId() <em>Ref Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getRefId()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String REF_ID_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getRefId() <em>Ref Id</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getRefId()

+	 * @generated

+	 * @ordered

+	 */

+	protected String refId = REF_ID_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLabel()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LABEL_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLabel()

+	 * @generated

+	 * @ordered

+	 */

+	protected String label = LABEL_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAMESPACE_URI_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getNamespaceUri() <em>Namespace Uri</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getNamespaceUri()

+	 * @generated

+	 * @ordered

+	 */

+	protected String namespaceUri = NAMESPACE_URI_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<SingleInputPort> inputPorts;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ModelRefactoringImpl() {

+		super();

+	}

+

+	public ModelRefactoringImpl(String id) {

+		super();

+		this.refId = id;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MODEL_REFACTORING;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+		return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldName = name;

+			name = newName;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MODEL_REFACTORING__NAME, oldName, name));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getDescription() {

+		return description;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setDescription(String newDescription) {

+		String oldDescription = description;

+		description = newDescription;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MODEL_REFACTORING__DESCRIPTION, oldDescription, description));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getRefId() {

+		return refId;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setRefId(String newRefId) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldRefId = refId;

+			refId = newRefId;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MODEL_REFACTORING__REF_ID, oldRefId, refId));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLabel() {

+		return label;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLabel(String newLabel) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldLabel = label;

+			label = newLabel;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MODEL_REFACTORING__LABEL, oldLabel, label));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getNamespaceUri() {

+		return namespaceUri;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setNamespaceUri(String newNamespaceUri) {

+		if (ComrelUtil.objectIsSettable(this)) {

+			String oldNamespaceUri = namespaceUri;

+			namespaceUri = newNamespaceUri;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MODEL_REFACTORING__NAMESPACE_URI, oldNamespaceUri, namespaceUri));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<SingleInputPort> getInputPorts() {

+		if (inputPorts == null) {

+			inputPorts = new EObjectContainmentEList<SingleInputPort>(SingleInputPort.class, this, ComrelPackage.MODEL_REFACTORING__INPUT_PORTS);

+		}

+		return inputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.MODEL_REFACTORING__INPUT_PORTS:

+				return ((InternalEList<?>)getInputPorts()).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 ComrelPackage.MODEL_REFACTORING__NAME:

+				return getName();

+			case ComrelPackage.MODEL_REFACTORING__DESCRIPTION:

+				return getDescription();

+			case ComrelPackage.MODEL_REFACTORING__REF_ID:

+				return getRefId();

+			case ComrelPackage.MODEL_REFACTORING__LABEL:

+				return getLabel();

+			case ComrelPackage.MODEL_REFACTORING__NAMESPACE_URI:

+				return getNamespaceUri();

+			case ComrelPackage.MODEL_REFACTORING__INPUT_PORTS:

+				return getInputPorts();

+		}

+		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 ComrelPackage.MODEL_REFACTORING__NAME:

+				setName((String)newValue);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__DESCRIPTION:

+				setDescription((String)newValue);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__REF_ID:

+				setRefId((String)newValue);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__LABEL:

+				setLabel((String)newValue);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__NAMESPACE_URI:

+				setNamespaceUri((String)newValue);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__INPUT_PORTS:

+				getInputPorts().clear();

+				getInputPorts().addAll((Collection<? extends SingleInputPort>)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MODEL_REFACTORING__NAME:

+				setName(NAME_EDEFAULT);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__DESCRIPTION:

+				setDescription(DESCRIPTION_EDEFAULT);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__REF_ID:

+				setRefId(REF_ID_EDEFAULT);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__LABEL:

+				setLabel(LABEL_EDEFAULT);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__NAMESPACE_URI:

+				setNamespaceUri(NAMESPACE_URI_EDEFAULT);

+				return;

+			case ComrelPackage.MODEL_REFACTORING__INPUT_PORTS:

+				getInputPorts().clear();

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MODEL_REFACTORING__NAME:

+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

+			case ComrelPackage.MODEL_REFACTORING__DESCRIPTION:

+				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);

+			case ComrelPackage.MODEL_REFACTORING__REF_ID:

+				return REF_ID_EDEFAULT == null ? refId != null : !REF_ID_EDEFAULT.equals(refId);

+			case ComrelPackage.MODEL_REFACTORING__LABEL:

+				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);

+			case ComrelPackage.MODEL_REFACTORING__NAMESPACE_URI:

+				return NAMESPACE_URI_EDEFAULT == null ? namespaceUri != null : !NAMESPACE_URI_EDEFAULT.equals(namespaceUri);

+			case ComrelPackage.MODEL_REFACTORING__INPUT_PORTS:

+				return inputPorts != null && !inputPorts.isEmpty();

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (derivedFeatureID) {

+				case ComrelPackage.MODEL_REFACTORING__DESCRIPTION: return ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (baseFeatureID) {

+				case ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION: return ComrelPackage.MODEL_REFACTORING__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (name: ");

+		result.append(name);

+		result.append(", description: ");

+		result.append(description);

+		result.append(", refId: ");

+		result.append(refId);

+		result.append(", label: ");

+		result.append(label);

+		result.append(", namespaceUri: ");

+		result.append(namespaceUri);

+		result.append(')');

+		return result.toString();

+	}

+

+} //ModelRefactoringImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFeatureHelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFeatureHelperImpl.java
new file mode 100644
index 0000000..71daf7c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFeatureHelperImpl.java
@@ -0,0 +1,179 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.MultiFeatureHelper;

+import comrel.MultiOutputPort;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Feature Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiFeatureHelperImpl#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiFeatureHelperImpl extends FeatureHelperImpl implements MultiFeatureHelper {

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiOutputPort outputPort;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFeatureHelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_FEATURE_HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(MultiOutputPort newOutputPort, NotificationChain msgs) {

+		MultiOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(MultiOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT:

+				return getOutputPort();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_HELPER__OUTPUT_PORT:

+				return outputPort != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //MultiFeatureHelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFeatureUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFeatureUnitImpl.java
new file mode 100644
index 0000000..b6eea76
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFeatureUnitImpl.java
@@ -0,0 +1,422 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiFeatureHelper;

+import comrel.MultiFeatureUnit;

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.SingleInputPort;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Feature Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiFeatureUnitImpl#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.impl.MultiFeatureUnitImpl#getSecondaryInputPorts <em>Secondary Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.MultiFeatureUnitImpl#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.impl.MultiFeatureUnitImpl#getMultiFeatureHelper <em>Multi Feature Helper</em>}</li>

+ *   <li>{@link comrel.impl.MultiFeatureUnitImpl#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiFeatureUnitImpl extends FeatureUnitImpl implements MultiFeatureUnit {

+	/**

+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleInputPort inputPort;

+

+	/**

+	 * The cached value of the '{@link #getSecondaryInputPorts() <em>Secondary Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSecondaryInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<MultiInputPort> secondaryInputPorts;

+

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiOutputPort outputPort;

+

+	/**

+	 * The cached value of the '{@link #getMultiFeatureHelper() <em>Multi Feature Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMultiFeatureHelper()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiFeatureHelper multiFeatureHelper;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Multi Feature Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFeatureUnitImpl() {

+		super();

+	}

+

+	public MultiFeatureUnitImpl(MultiFeatureHelper helper) {

+		this.multiFeatureHelper = helper;

+		this.name = helper.getName();

+		this.helperUnitId = helper.getHelperId();

+		this.description = helper.getDescription();

+		this.namespaceUri = helper.getNamespaceUri();

+		SingleInputPort inputPort = ComrelFactory.eINSTANCE.createSingleInputPort();

+		MultiOutputPort outputPort = ComrelFactory.eINSTANCE.createMultiOutputPort();

+		inputPort.setDescription(helper.getInputPort().getDescription());

+		inputPort.setName(helper.getInputPort().getName());

+		inputPort.setType(helper.getInputPort().getType());

+

+		this.setInputPort(inputPort);

+		outputPort.setDescription(helper.getOutputPort().getDescription());

+		outputPort.setName(helper.getOutputPort().getName());

+		outputPort.setType(helper.getOutputPort().getType());

+

+		this.setOutputPort(outputPort);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_FEATURE_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort getInputPort() {

+		return inputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetInputPort(SingleInputPort newInputPort, NotificationChain msgs) {

+		SingleInputPort oldInputPort = inputPort;

+		inputPort = newInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT, oldInputPort, newInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setInputPort(SingleInputPort newInputPort) {

+		if (newInputPort != inputPort) {

+			NotificationChain msgs = null;

+			if (inputPort != null)

+				msgs = ((InternalEObject)inputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT, null, msgs);

+			if (newInputPort != null)

+				msgs = ((InternalEObject)newInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT, null, msgs);

+			msgs = basicSetInputPort(newInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT, newInputPort, newInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<MultiInputPort> getSecondaryInputPorts() {

+		if (secondaryInputPorts == null) {

+			secondaryInputPorts = new EObjectContainmentEList<MultiInputPort>(MultiInputPort.class, this, ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS);

+		}

+		return secondaryInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(MultiOutputPort newOutputPort, NotificationChain msgs) {

+		MultiOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(MultiOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFeatureHelper getMultiFeatureHelper() {

+		if (multiFeatureHelper != null && multiFeatureHelper.eIsProxy()) {

+			InternalEObject oldMultiFeatureHelper = (InternalEObject)multiFeatureHelper;

+			multiFeatureHelper = (MultiFeatureHelper)eResolveProxy(oldMultiFeatureHelper);

+			if (multiFeatureHelper != oldMultiFeatureHelper) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER, oldMultiFeatureHelper, multiFeatureHelper));

+			}

+		}

+		return multiFeatureHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFeatureHelper basicGetMultiFeatureHelper() {

+		return multiFeatureHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setMultiFeatureHelper(MultiFeatureHelper newMultiFeatureHelper) {

+		if(ComrelUtil.objectIsSettable(this) || multiFeatureHelper == null){

+			MultiFeatureHelper oldMultiFeatureHelper = multiFeatureHelper;

+			multiFeatureHelper = newMultiFeatureHelper;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER, oldMultiFeatureHelper, multiFeatureHelper));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT:

+				return basicSetInputPort(null, msgs);

+			case ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				return ((InternalEList<?>)getSecondaryInputPorts()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT:

+				return getInputPort();

+			case ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				return getSecondaryInputPorts();

+			case ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT:

+				return getOutputPort();

+			case ComrelPackage.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER:

+				if (resolve) return getMultiFeatureHelper();

+				return basicGetMultiFeatureHelper();

+			case ComrelPackage.MULTI_FEATURE_UNIT__TYPE:

+				return getType();

+		}

+		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 ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT:

+				setInputPort((SingleInputPort)newValue);

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				getSecondaryInputPorts().clear();

+				getSecondaryInputPorts().addAll((Collection<? extends MultiInputPort>)newValue);

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)newValue);

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER:

+				setMultiFeatureHelper((MultiFeatureHelper)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT:

+				setInputPort((SingleInputPort)null);

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				getSecondaryInputPorts().clear();

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)null);

+				return;

+			case ComrelPackage.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER:

+				setMultiFeatureHelper((MultiFeatureHelper)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FEATURE_UNIT__INPUT_PORT:

+				return inputPort != null;

+			case ComrelPackage.MULTI_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				return secondaryInputPorts != null && !secondaryInputPorts.isEmpty();

+			case ComrelPackage.MULTI_FEATURE_UNIT__OUTPUT_PORT:

+				return outputPort != null;

+			case ComrelPackage.MULTI_FEATURE_UNIT__MULTI_FEATURE_HELPER:

+				return multiFeatureHelper != null;

+			case ComrelPackage.MULTI_FEATURE_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

+} //MultiFeatureUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFilterHelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFilterHelperImpl.java
new file mode 100644
index 0000000..ad6482c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFilterHelperImpl.java
@@ -0,0 +1,179 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.MultiFilterHelper;

+import comrel.MultiOutputPort;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Filter Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiFilterHelperImpl#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiFilterHelperImpl extends FilterHelperImpl implements MultiFilterHelper {

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiOutputPort outputPort;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFilterHelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_FILTER_HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(MultiOutputPort newOutputPort, NotificationChain msgs) {

+		MultiOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(MultiOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT:

+				return getOutputPort();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_HELPER__OUTPUT_PORT:

+				return outputPort != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //MultiFilterHelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFilterUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFilterUnitImpl.java
new file mode 100644
index 0000000..5c56470
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiFilterUnitImpl.java
@@ -0,0 +1,379 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiFilterHelper;

+import comrel.MultiFilterUnit;

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Filter Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiFilterUnitImpl#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.impl.MultiFilterUnitImpl#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.impl.MultiFilterUnitImpl#getMultiFilterHelper <em>Multi Filter Helper</em>}</li>

+ *   <li>{@link comrel.impl.MultiFilterUnitImpl#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiFilterUnitImpl extends FilterUnitImpl implements MultiFilterUnit {

+	/**

+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiInputPort inputPort;

+

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiOutputPort outputPort;

+

+	/**

+	 * The cached value of the '{@link #getMultiFilterHelper() <em>Multi Filter Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMultiFilterHelper()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiFilterHelper multiFilterHelper;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Multi Filter Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiFilterUnitImpl() {

+		super();

+	}

+

+	public MultiFilterUnitImpl(MultiFilterHelper helper) {

+		this.multiFilterHelper = helper;

+		this.helperUnitId = helper.getHelperId();

+		this.name = helper.getName();

+		this.description = helper.getDescription();

+		this.namespaceUri = helper.getNamespaceUri();

+		MultiInputPort inputPort = ComrelFactory.eINSTANCE.createMultiInputPort();

+		MultiOutputPort outputPort = ComrelFactory.eINSTANCE.createMultiOutputPort();

+		inputPort.setDescription(helper.getInputPort().getDescription());

+		inputPort.setName(helper.getInputPort().getName());

+		inputPort.setType(helper.getInputPort().getType());

+

+		this.setInputPort(inputPort);

+		outputPort.setDescription(helper.getOutputPort().getDescription());

+		outputPort.setName(helper.getOutputPort().getName());

+		outputPort.setType(helper.getOutputPort().getType());

+

+		this.setOutputPort(outputPort);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_FILTER_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort getInputPort() {

+		return inputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetInputPort(MultiInputPort newInputPort, NotificationChain msgs) {

+		MultiInputPort oldInputPort = inputPort;

+		inputPort = newInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT, oldInputPort, newInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setInputPort(MultiInputPort newInputPort) {

+		if (newInputPort != inputPort) {

+			NotificationChain msgs = null;

+			if (inputPort != null)

+				msgs = ((InternalEObject)inputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT, null, msgs);

+			if (newInputPort != null)

+				msgs = ((InternalEObject)newInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT, null, msgs);

+			msgs = basicSetInputPort(newInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT, newInputPort, newInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(MultiOutputPort newOutputPort, NotificationChain msgs) {

+		MultiOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(MultiOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFilterHelper getMultiFilterHelper() {

+		if (multiFilterHelper != null && multiFilterHelper.eIsProxy()) {

+			InternalEObject oldMultiFilterHelper = (InternalEObject)multiFilterHelper;

+			multiFilterHelper = (MultiFilterHelper)eResolveProxy(oldMultiFilterHelper);

+			if (multiFilterHelper != oldMultiFilterHelper) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER, oldMultiFilterHelper, multiFilterHelper));

+			}

+		}

+		return multiFilterHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiFilterHelper basicGetMultiFilterHelper() {

+		return multiFilterHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setMultiFilterHelper(MultiFilterHelper newMultiFilterHelper) {

+		if(ComrelUtil.objectIsSettable(this) || multiFilterHelper == null){

+			MultiFilterHelper oldMultiFilterHelper = multiFilterHelper;

+			multiFilterHelper = newMultiFilterHelper;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER, oldMultiFilterHelper, multiFilterHelper));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT:

+				return basicSetInputPort(null, msgs);

+			case ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT:

+				return getInputPort();

+			case ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT:

+				return getOutputPort();

+			case ComrelPackage.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER:

+				if (resolve) return getMultiFilterHelper();

+				return basicGetMultiFilterHelper();

+			case ComrelPackage.MULTI_FILTER_UNIT__TYPE:

+				return getType();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT:

+				setInputPort((MultiInputPort)newValue);

+				return;

+			case ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)newValue);

+				return;

+			case ComrelPackage.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER:

+				setMultiFilterHelper((MultiFilterHelper)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT:

+				setInputPort((MultiInputPort)null);

+				return;

+			case ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT:

+				setOutputPort((MultiOutputPort)null);

+				return;

+			case ComrelPackage.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER:

+				setMultiFilterHelper((MultiFilterHelper)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_FILTER_UNIT__INPUT_PORT:

+				return inputPort != null;

+			case ComrelPackage.MULTI_FILTER_UNIT__OUTPUT_PORT:

+				return outputPort != null;

+			case ComrelPackage.MULTI_FILTER_UNIT__MULTI_FILTER_HELPER:

+				return multiFilterHelper != null;

+			case ComrelPackage.MULTI_FILTER_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

+} //MultiFilterUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiInputPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiInputPortImpl.java
new file mode 100644
index 0000000..4f2e7d8
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiInputPortImpl.java
@@ -0,0 +1,90 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.MultiInputPort;

+import comrel.PortMapping;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Input Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiInputPortImpl extends MultiPortImpl implements MultiInputPort {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiInputPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_INPUT_PORT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Boolean isMappingTarget() {

+		EObject container = this.eContainer();

+		if (container == null) return true;

+		while(container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring refSys;

+		if(container instanceof CompositeRefactoring) {

+			refSys = (CompositeRefactoring) container;

+		}

+		else {

+			throw new UnsupportedOperationException("Container 'RefactoringSystem' doesn't exists");

+		}

+		EList<PortMapping> mappings = refSys.getPortMappings();

+		for(PortMapping m : mappings) {

+			if(m.getTarget() == this) {

+				return true;

+			}

+		}

+		return false;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Boolean isRootPort() {

+		EObject container = this.eContainer();

+		if (container == null) throw new UnsupportedOperationException("Container doesn't exists");

+		if(container.eContainer() instanceof CompositeRefactoring) {

+			return true;

+		}

+		else {

+			return false;

+		}

+	}

+

+} //MultiInputPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiOutputPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiOutputPortImpl.java
new file mode 100644
index 0000000..f08ec9b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiOutputPortImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.MultiOutputPort;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Output Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiOutputPortImpl extends MultiPortImpl implements MultiOutputPort {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiOutputPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_OUTPUT_PORT;

+	}

+

+} //MultiOutputPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiPortImpl.java
new file mode 100644
index 0000000..461ceaa
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiPortImpl.java
@@ -0,0 +1,151 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.MultiPort;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.util.EList;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiPortImpl#getValue <em>Value</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class MultiPortImpl extends PortImpl implements MultiPort {

+	/**

+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<Object> value;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_PORT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<Object> getValue() {

+		if (value == null) {

+			value = new EDataTypeUniqueEList<Object>(Object.class, this, ComrelPackage.MULTI_PORT__VALUE);

+		}

+		return value;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT__VALUE:

+				return getValue();

+		}

+		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 ComrelPackage.MULTI_PORT__VALUE:

+				getValue().clear();

+				getValue().addAll((Collection<? extends Object>)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT__VALUE:

+				getValue().clear();

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT__VALUE:

+				return value != null && !value.isEmpty();

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (value: ");

+		result.append(value);

+		result.append(')');

+		return result.toString();

+	}

+

+} //MultiPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiPortMappingImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiPortMappingImpl.java
new file mode 100644
index 0000000..952a868
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiPortMappingImpl.java
@@ -0,0 +1,245 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.MultiInputPort;

+import comrel.MultiPort;

+import comrel.MultiPortMapping;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiPortMappingImpl#getSource <em>Source</em>}</li>

+ *   <li>{@link comrel.impl.MultiPortMappingImpl#getTarget <em>Target</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiPortMappingImpl extends PortMappingImpl implements MultiPortMapping {

+	/**

+	 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSource()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiPort source;

+

+	/**

+	 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTarget()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiInputPort target;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiPortMappingImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_PORT_MAPPING;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPort getSource() {

+		if (source != null && source.eIsProxy()) {

+			InternalEObject oldSource = (InternalEObject)source;

+			source = (MultiPort)eResolveProxy(oldSource);

+			if (source != oldSource) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.MULTI_PORT_MAPPING__SOURCE, oldSource, source));

+			}

+		}

+		return source;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPort basicGetSource() {

+		return source;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSource(MultiPort newSource) {

+		this.resetVisualization();

+		MultiPort oldSource = source;

+		source = newSource;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_PORT_MAPPING__SOURCE, oldSource, source));

+		if(source != null && target != null){

+			if (source.getType() != null) {

+				updatePortTypesAndNames(source.getType(),source.getSingularPortName());

+			} else {

+				updatePortTypesAndNames(target.getType(),target.getSingularPortName());

+			}

+			updateMappingNumber();

+		}

+		else {

+			this.updateCRVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort getTarget() {

+		if (target != null && target.eIsProxy()) {

+			InternalEObject oldTarget = (InternalEObject)target;

+			target = (MultiInputPort)eResolveProxy(oldTarget);

+			if (target != oldTarget) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.MULTI_PORT_MAPPING__TARGET, oldTarget, target));

+			}

+		}

+		return target;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort basicGetTarget() {

+		return target;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTarget(MultiInputPort newTarget) {

+		this.resetVisualization();

+		MultiInputPort oldTarget = target;

+		target = newTarget;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_PORT_MAPPING__TARGET, oldTarget, target));

+		if(source != null && target != null){

+			if (target.getType() != null) {

+				updatePortTypesAndNames(target.getType(),target.getSingularPortName());

+			} else {

+				updatePortTypesAndNames(source.getType(),source.getSingularPortName());

+			}

+			updateMappingNumber();

+		}

+		else {

+			this.updateCRVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT_MAPPING__SOURCE:

+				if (resolve) return getSource();

+				return basicGetSource();

+			case ComrelPackage.MULTI_PORT_MAPPING__TARGET:

+				if (resolve) return getTarget();

+				return basicGetTarget();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT_MAPPING__SOURCE:

+				setSource((MultiPort)newValue);

+				return;

+			case ComrelPackage.MULTI_PORT_MAPPING__TARGET:

+				setTarget((MultiInputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT_MAPPING__SOURCE:

+				setSource((MultiPort)null);

+				return;

+			case ComrelPackage.MULTI_PORT_MAPPING__TARGET:

+				setTarget((MultiInputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_PORT_MAPPING__SOURCE:

+				return source != null;

+			case ComrelPackage.MULTI_PORT_MAPPING__TARGET:

+				return target != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //MultiPortMappingImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiSinglePortMappingImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiSinglePortMappingImpl.java
new file mode 100644
index 0000000..d004c15
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/MultiSinglePortMappingImpl.java
@@ -0,0 +1,245 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.MultiPort;

+import comrel.MultiSinglePortMapping;

+import comrel.SingleInputPort;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Multi Single Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.MultiSinglePortMappingImpl#getSource <em>Source</em>}</li>

+ *   <li>{@link comrel.impl.MultiSinglePortMappingImpl#getTarget <em>Target</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class MultiSinglePortMappingImpl extends PortMappingImpl implements MultiSinglePortMapping {

+	/**

+	 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSource()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiPort source;

+

+	/**

+	 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTarget()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleInputPort target;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected MultiSinglePortMappingImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.MULTI_SINGLE_PORT_MAPPING;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPort getSource() {

+		if (source != null && source.eIsProxy()) {

+			InternalEObject oldSource = (InternalEObject)source;

+			source = (MultiPort)eResolveProxy(oldSource);

+			if (source != oldSource) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.MULTI_SINGLE_PORT_MAPPING__SOURCE, oldSource, source));

+			}

+		}

+		return source;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiPort basicGetSource() {

+		return source;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSource(MultiPort newSource) {

+		this.resetVisualization();

+		MultiPort oldSource = source;

+		source = newSource;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_SINGLE_PORT_MAPPING__SOURCE, oldSource, source));

+		if(source != null && target != null){

+			if (source.getType() != null) {

+				updatePortTypesAndNames(source.getType(),source.getSingularPortName());

+			} else {

+				updatePortTypesAndNames(target.getType(),target.getSingularPortName());

+			}

+			updateMappingNumber();

+		}

+		else {

+			this.updateCRVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort getTarget() {

+		if (target != null && target.eIsProxy()) {

+			InternalEObject oldTarget = (InternalEObject)target;

+			target = (SingleInputPort)eResolveProxy(oldTarget);

+			if (target != oldTarget) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.MULTI_SINGLE_PORT_MAPPING__TARGET, oldTarget, target));

+			}

+		}

+		return target;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort basicGetTarget() {

+		return target;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTarget(SingleInputPort newTarget) {

+		this.resetVisualization();

+		SingleInputPort oldTarget = target;

+		target = newTarget;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.MULTI_SINGLE_PORT_MAPPING__TARGET, oldTarget, target));

+		if(source != null && target != null){

+			if (target.getType() != null) {

+				updatePortTypesAndNames(target.getType(),target.getSingularPortName());

+			} else {

+				updatePortTypesAndNames(source.getType(),source.getSingularPortName());

+			}

+			updateMappingNumber();

+		}

+		else {

+			this.updateCRVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__SOURCE:

+				if (resolve) return getSource();

+				return basicGetSource();

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__TARGET:

+				if (resolve) return getTarget();

+				return basicGetTarget();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__SOURCE:

+				setSource((MultiPort)newValue);

+				return;

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__TARGET:

+				setTarget((SingleInputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__SOURCE:

+				setSource((MultiPort)null);

+				return;

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__TARGET:

+				setTarget((SingleInputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__SOURCE:

+				return source != null;

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING__TARGET:

+				return target != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //MultiSinglePortMappingImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/OutputPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/OutputPortImpl.java
new file mode 100644
index 0000000..8c40366
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/OutputPortImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.OutputPort;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Output Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class OutputPortImpl extends PortImpl implements OutputPort {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected OutputPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.OUTPUT_PORT;

+	}

+

+} //OutputPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/ParallelQueuedUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ParallelQueuedUnitImpl.java
new file mode 100644
index 0000000..1f8318e
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/ParallelQueuedUnitImpl.java
@@ -0,0 +1,425 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MultiInputPort;

+import comrel.ParallelQueuedUnit;

+import comrel.RefactoringUnit;

+import comrel.SingleInputPort;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Parallel Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.ParallelQueuedUnitImpl#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.impl.ParallelQueuedUnitImpl#getRefactoringUnits <em>Refactoring Units</em>}</li>

+ *   <li>{@link comrel.impl.ParallelQueuedUnitImpl#getSingleInputPorts <em>Single Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.ParallelQueuedUnitImpl#getMultiInputPorts <em>Multi Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.ParallelQueuedUnitImpl#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.impl.ParallelQueuedUnitImpl#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class ParallelQueuedUnitImpl extends TwicedQueuedUnitImpl implements ParallelQueuedUnit {

+	/**

+	 * The cached value of the '{@link #getHelperUnits() <em>Helper Units</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<HelperUnit> helperUnits;

+

+	/**

+	 * The cached value of the '{@link #getRefactoringUnits() <em>Refactoring Units</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getRefactoringUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected RefactoringUnit refactoringUnits;

+

+	/**

+	 * The cached value of the '{@link #getSingleInputPorts() <em>Single Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSingleInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<SingleInputPort> singleInputPorts;

+

+	/**

+	 * The cached value of the '{@link #getMultiInputPorts() <em>Multi Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMultiInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<MultiInputPort> multiInputPorts;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Parallel Queued Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LBL_STRICT_EDEFAULT = "strict";

+

+	/**

+	 * The cached value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected String lblStrict = LBL_STRICT_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected ParallelQueuedUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.PARALLEL_QUEUED_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<HelperUnit> getHelperUnits() {

+		if (helperUnits == null) {

+			helperUnits = new EObjectContainmentEList<HelperUnit>(HelperUnit.class, this, ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS);

+		}

+		return helperUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnit getRefactoringUnits() {

+		return refactoringUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetRefactoringUnits(RefactoringUnit newRefactoringUnits, NotificationChain msgs) {

+		RefactoringUnit oldRefactoringUnits = refactoringUnits;

+		refactoringUnits = newRefactoringUnits;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS, oldRefactoringUnits, newRefactoringUnits);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setRefactoringUnits(RefactoringUnit newRefactoringUnits) {

+		if (newRefactoringUnits != refactoringUnits) {

+			NotificationChain msgs = null;

+			if (refactoringUnits != null)

+				msgs = ((InternalEObject)refactoringUnits).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS, null, msgs);

+			if (newRefactoringUnits != null)

+				msgs = ((InternalEObject)newRefactoringUnits).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS, null, msgs);

+			msgs = basicSetRefactoringUnits(newRefactoringUnits, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS, newRefactoringUnits, newRefactoringUnits));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<SingleInputPort> getSingleInputPorts() {

+		if (singleInputPorts == null) {

+			singleInputPorts = new EObjectContainmentEList<SingleInputPort>(SingleInputPort.class, this, ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+		}

+		return singleInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<MultiInputPort> getMultiInputPorts() {

+		if (multiInputPorts == null) {

+			multiInputPorts = new EObjectContainmentEList<MultiInputPort>(MultiInputPort.class, this, ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS);

+		}

+		return multiInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLblStrict() {

+		return lblStrict;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLblStrict(String newLblStrict) {

+		String oldLblStrict = lblStrict;

+		lblStrict = newLblStrict;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.PARALLEL_QUEUED_UNIT__LBL_STRICT, oldLblStrict, lblStrict));

+	}

+	

+	@Override

+	public void setStrict(boolean newStrict) {

+		super.setStrict(newStrict);

+		if (newStrict) setLblStrict("strict");

+		else setLblStrict("non strict");

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS:

+				return ((InternalEList<?>)getHelperUnits()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS:

+				return basicSetRefactoringUnits(null, msgs);

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return ((InternalEList<?>)getSingleInputPorts()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				return ((InternalEList<?>)getMultiInputPorts()).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 ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS:

+				return getHelperUnits();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS:

+				return getRefactoringUnits();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return getSingleInputPorts();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				return getMultiInputPorts();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__TYPE:

+				return getType();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__LBL_STRICT:

+				return getLblStrict();

+		}

+		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 ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				getHelperUnits().addAll((Collection<? extends HelperUnit>)newValue);

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS:

+				setRefactoringUnits((RefactoringUnit)newValue);

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				getSingleInputPorts().clear();

+				getSingleInputPorts().addAll((Collection<? extends SingleInputPort>)newValue);

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				getMultiInputPorts().clear();

+				getMultiInputPorts().addAll((Collection<? extends MultiInputPort>)newValue);

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__LBL_STRICT:

+				setLblStrict((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS:

+				setRefactoringUnits((RefactoringUnit)null);

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				getSingleInputPorts().clear();

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				getMultiInputPorts().clear();

+				return;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__LBL_STRICT:

+				setLblStrict(LBL_STRICT_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__HELPER_UNITS:

+				return helperUnits != null && !helperUnits.isEmpty();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__REFACTORING_UNITS:

+				return refactoringUnits != null;

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return singleInputPorts != null && !singleInputPorts.isEmpty();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__MULTI_INPUT_PORTS:

+				return multiInputPorts != null && !multiInputPorts.isEmpty();

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+			case ComrelPackage.PARALLEL_QUEUED_UNIT__LBL_STRICT:

+				return LBL_STRICT_EDEFAULT == null ? lblStrict != null : !LBL_STRICT_EDEFAULT.equals(lblStrict);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(", lblStrict: ");

+		result.append(lblStrict);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public void init(){

+		ComrelFactory factory = ComrelFactory.eINSTANCE;

+		MultiInputPort one = factory.createMultiInputPort();

+		MultiInputPort two = factory.createMultiInputPort();

+		this.getMultiInputPorts().add(one);

+		this.getMultiInputPorts().add(two);

+	}

+	

+	public EList<InputPort> getAllInputPorts() {

+		EList<InputPort> inputPorts = new BasicEList<InputPort>();

+		inputPorts.addAll(this.getSingleInputPorts());

+		inputPorts.addAll(this.getMultiInputPorts());

+		return inputPorts;

+	}

+	

+	

+

+} //ParallelQueuedUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/PortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/PortImpl.java
new file mode 100644
index 0000000..adb009c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/PortImpl.java
@@ -0,0 +1,389 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.draw2d.Shape;

+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.EObjectImpl;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.DescribedElement;

+import comrel.InputPort;

+import comrel.OutputPort;

+import comrel.Port;

+import comrel.PortMapping;

+import comrel.SinglePort;

+import comrel.figures.InputPortFigure;

+import comrel.figures.OutputPortFigure;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.PortImpl#getName <em>Name</em>}</li>

+ *   <li>{@link comrel.impl.PortImpl#getDescription <em>Description</em>}</li>

+ *   <li>{@link comrel.impl.PortImpl#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class PortImpl extends EObjectImpl implements Port {

+	

+	public Shape figure;

+

+	public Shape getFigure() {

+		return figure;

+	}

+

+	public void setFigure(Shape figure) {

+		this.figure = figure;

+	}

+	

+	/**

+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String name = NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String DESCRIPTION_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getDescription()

+	 * @generated

+	 * @ordered

+	 */

+	protected String description = DESCRIPTION_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected Class type;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected PortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.PORT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+		return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName) {

+		if (ComrelUtil.portIsSettable(this)) {

+			String oldName = name;

+			name = newName;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.PORT__NAME, oldName, name));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getDescription() {

+		return description;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setDescription(String newDescription) {

+		String oldDescription = description;

+		description = newDescription;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.PORT__DESCRIPTION, oldDescription, description));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Class getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setType(Class newType) {

+		this.setType(newType, true);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setType(Class newType, boolean initiator) {

+		if (ComrelUtil.portIsSettable(this)) {

+			Class oldType = type;

+			type = newType;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET,

+						ComrelPackage.PORT__TYPE, oldType, type));

+			if (initiator && this.eContainer() != null) {

+				CompositeRefactoring cr = ComrelUtil.getContainedCompositeRefactoring(this);

+				for (PortMapping pm : cr.getPortMappings()) {

+					if (pm.getSource() == this || pm.getTarget() == this) {

+						pm.updatePortTypesAndNames(newType, this

+								.getSingularPortName());

+						return;

+					}

+				}

+			}

+		}

+//		updateFigure();

+	}

+

+	private void updateFigure() {

+		if (this.getFigure() != null) {

+			if (this instanceof InputPort) {

+				InputPortFigure f = (InputPortFigure) this.getFigure();

+				f.updateFigure();

+			} else if (this instanceof OutputPort) {

+				OutputPortFigure f = (OutputPortFigure) this.getFigure();

+				f.updateFigure();

+			}

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void updatePortName(String singularPortName) {

+		// new

+		if (this.name != null && ! this.name.isEmpty()) return;

+		// end new

+		if (this instanceof SinglePort) {

+			this.setName(singularPortName);

+		} else {

+			String pluralPortName = ComrelUtil

+					.convertSingularToPluralPortName(singularPortName);

+			this.setName(pluralPortName);

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getSingularPortName() {

+		if (getName() == null) {

+			return "";

+		}

+		if (this instanceof SinglePort) {

+			return this.getName();

+		} else {

+			String singularPortName = ComrelUtil.convertPluralToSingularPortName(this

+					.getName());

+			return singularPortName;

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.PORT__NAME:

+				return getName();

+			case ComrelPackage.PORT__DESCRIPTION:

+				return getDescription();

+			case ComrelPackage.PORT__TYPE:

+				return getType();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.PORT__NAME:

+				setName((String)newValue);

+				return;

+			case ComrelPackage.PORT__DESCRIPTION:

+				setDescription((String)newValue);

+				return;

+			case ComrelPackage.PORT__TYPE:

+				setType((Class)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.PORT__NAME:

+				setName(NAME_EDEFAULT);

+				return;

+			case ComrelPackage.PORT__DESCRIPTION:

+				setDescription(DESCRIPTION_EDEFAULT);

+				return;

+			case ComrelPackage.PORT__TYPE:

+				setType((Class)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.PORT__NAME:

+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

+			case ComrelPackage.PORT__DESCRIPTION:

+				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);

+			case ComrelPackage.PORT__TYPE:

+				return type != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (derivedFeatureID) {

+				case ComrelPackage.PORT__DESCRIPTION: return ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {

+		if (baseClass == DescribedElement.class) {

+			switch (baseFeatureID) {

+				case ComrelPackage.DESCRIBED_ELEMENT__DESCRIPTION: return ComrelPackage.PORT__DESCRIPTION;

+				default: return -1;

+			}

+		}

+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (name: ");

+		result.append(name);

+		result.append(", description: ");

+		result.append(description);

+		result.append(", type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

+} //PortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/PortMappingImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/PortMappingImpl.java
new file mode 100644
index 0000000..67b29bc
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/PortMappingImpl.java
@@ -0,0 +1,333 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.ArrayList;

+

+import org.eclipse.draw2d.Shape;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.InputPort;

+import comrel.MappingVisualization;

+import comrel.Port;

+import comrel.PortMapping;

+import comrel.figures.InputPortFigure;

+import comrel.figures.OutputPortFigure;

+import comrel.figures.PortMappingFigure;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class PortMappingImpl extends EObjectImpl implements PortMapping {

+	

+	public boolean visible = true;

+

+	public PortMappingFigure figure;

+

+	public int mappingNumber = Integer.MAX_VALUE;

+	

+	

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected PortMappingImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.PORT_MAPPING;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Port getSource() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public InputPort getTarget() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void updatePortTypesAndNames(Class type, String singularPortName) {

+		if (type != null) {

+			if (getSource() != null && getTarget() != null) {

+				getSource().updatePortName(singularPortName);

+				getTarget().updatePortName(singularPortName);

+				if (getSource().getType() == null

+						&& getTarget().getType() == null) {

+					return;

+				}

+				boolean flag = false;

+				if (!ComrelUtil.portIsSettable(getSource())) {

+					if (getSource().getType() == null

+							|| !getSource().getType().equals(type)) {

+						updatePortTypesAndNames(getSource().getType(),

+								getSource().getSingularPortName());

+						return;

+					}

+				}

+				if (!ComrelUtil.portIsSettable(getTarget())) {

+					if (getTarget().getType() == null

+							|| !getTarget().getType().equals(type)) {

+						updatePortTypesAndNames(getTarget().getType(),

+								getTarget().getSingularPortName());

+						return;

+					}

+				}

+				getSource().updatePortName(singularPortName);

+				getTarget().updatePortName(singularPortName);

+				if (getSource().getType() == null

+						|| !getSource().getType().equals(type)) {

+					getSource().setType(type, false);

+					flag = true;

+				}

+				if (getTarget().getType() == null

+						|| !getTarget().getType().equals(type)) {

+					getTarget().setType(type, false);

+					flag = true;

+				}

+				if (flag) {

+					CompositeRefactoring refSys = ComrelUtil

+							.getContainedCompositeRefactoring(getSource());

+

+					boolean con;

+					for (PortMapping map : refSys.getPortMappings()) {

+						if (map != this) {

+							con = map.getSource() == this.getSource();

+							con |= map.getSource() == this.getTarget();

+							con |= map.getTarget() == this.getSource();

+							con |= map.getTarget() == this.getTarget();

+							if (con) {

+								map.updatePortTypesAndNames(type,

+										singularPortName);

+							}

+						}

+					}

+				}

+			}

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void updateMappingNumber() {

+		int mNumber = Integer.MAX_VALUE;

+

+		CompositeRefactoring cr = this.getCompositeRefactoring();

+		if (cr == null) {

+			this.setMappingNumber(Integer.MAX_VALUE);

+			return;

+		}

+		boolean con;

+		ArrayList<PortMapping> tMappings = new ArrayList<PortMapping>();

+		if (cr.getPortMappings() != null) {

+

+			for (PortMapping map : cr.getPortMappings()) {

+				if (map != this) {

+					con = map.getSource() == this.getSource();

+					con |= map.getSource() == this.getTarget();

+					con |= map.getTarget() == this.getSource();

+					con |= map.getTarget() == this.getTarget();

+					if (con) {

+						mNumber = Math.min(mNumber, map.getMappingNumber());

+						tMappings.add(map);

+					}

+				}

+			}

+		}

+		if (mNumber == Integer.MAX_VALUE) {

+			mNumber = 1;

+

+			while (cr.getMappingNumbers().contains(mNumber)) {

+				mNumber++;

+			}

+		}

+		cr.getMappingNumbers().add(mNumber);

+		this.setMappingNumber(mNumber);

+

+		for (PortMapping m : tMappings) {

+			if (m.getMappingNumber() != mNumber) {

+				m.updateMappingNumber();

+			}

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void updateVisualization() {

+		if (mappingNumber == Integer.MAX_VALUE)

+			updateMappingNumber();

+		if (figure == null) {

+			return;

+		}

+		CompositeRefactoring refSys = this.getCompositeRefactoring();

+		if (refSys == null) {

+			return;

+		}

+		this.resetVisualization();

+		MappingVisualization visualization = refSys.getMappingVisualization();

+		Color bg;

+		switch (visualization.getValue()) {

+		case MappingVisualization.ARROWS_VALUE:

+			this.figure.setVisible(true);

+			this.setVisible(false);

+			break;

+		case MappingVisualization.COLORED_PORTS_VALUE:

+			bg = ComrelUtil.getColor(this.getMappingNumber());

+			this.figure.setVisible(false);

+			this.setColoredPorts(bg);

+			break;

+		case MappingVisualization.INDICES_VALUE:

+			this.figure.setVisible(false);

+			this.setPortIndexVisualization(true);

+			break;

+		case MappingVisualization.ARROWS_AND_COLORED_PORTS_VALUE:

+			bg = ComrelUtil.getColor(this.getMappingNumber());

+			this.figure.setVisible(true);

+			this.setColoredPorts(bg);

+			break;

+		case MappingVisualization.ARROWS_AND_INDICES_VALUE:

+			this.figure.setVisible(true);

+			this.setPortIndexVisualization(true);

+			break;

+		}

+	}

+	

+	private CompositeRefactoring getCompositeRefactoring() {

+		CompositeRefactoring cr = ComrelUtil.getContainedCompositeRefactoring(this);

+		return cr;

+	}

+	

+	public void setMappingNumber(int mappingNumber) {

+		CompositeRefactoring cr = this.getCompositeRefactoring();

+		this.mappingNumber = mappingNumber;

+		if (cr != null) {

+			cr.getMappingNumbers().add(mappingNumber);

+		}

+	}

+

+	public int getMappingNumber() {

+		return mappingNumber;

+	}

+	

+	public void setFigure(PortMappingFigure figure) {

+		this.figure = figure;

+		this.updateVisualization();

+	}

+

+	public PortMappingFigure getFigure() {

+		return figure;

+	}

+	

+	private void setColoredPorts(Color bg) {

+		if (this.getSource() != null) {

+			if (this.getSource().getFigure() != null) {

+				this.getSource().getFigure().setBackgroundColor(bg);

+			}

+		}

+		if (this.getTarget() != null) {

+			if (this.getTarget().getFigure() != null) {

+				this.getTarget().getFigure().setBackgroundColor(bg);

+			}

+		}

+	}

+

+	protected void resetVisualization() {

+		if (this.figure != null) {

+			this.figure.setVisible(true);

+			this.setVisible(true);

+		}

+		Color bg = new Color(null, 255, 255, 255);

+		this.setColoredPorts(bg);

+		setPortIndexVisualization(false);

+	}

+

+	private void setPortIndexVisualization(boolean visualization) {

+		if (this.getSource() != null) {

+			setPortIndexVisualization(this.getSource(), visualization);

+		}

+		if (this.getTarget() != null) {

+			setPortIndexVisualization(this.getTarget(), visualization);

+		}

+	}

+

+	private void setPortIndexVisualization(Port p, boolean visible) {

+		Shape f = null;

+		if (p.getFigure() != null) {

+			f = p.getFigure();

+			if (f instanceof InputPortFigure) {

+				InputPortFigure i = ((InputPortFigure) f);

+				i.setLabel("" + this.getMappingNumber());

+				i.getLabel().setVisible(visible);

+			}

+			if (f instanceof OutputPortFigure) {

+				OutputPortFigure o = ((OutputPortFigure) f);

+				o.setLabel("" + this.getMappingNumber());

+				o.getLabel().setVisible(visible);

+			}

+		}

+	}

+

+	public boolean isVisible() {

+		return visible;

+	}

+

+	public void setVisible(boolean visible) {

+		this.visible = visible;

+

+	}

+

+	protected void updateCRVisualization() {

+		CompositeRefactoring cr = ComrelUtil.getContainedCompositeRefactoring(this);

+		if (cr != null) {

+			cr.updateVisualization();

+		}

+	}	

+

+} //PortMappingImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/QueuedUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/QueuedUnitImpl.java
new file mode 100644
index 0000000..62ab63f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/QueuedUnitImpl.java
@@ -0,0 +1,177 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.QueuedUnit;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.QueuedUnitImpl#isStrict <em>Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class QueuedUnitImpl extends CompositeUnitImpl implements QueuedUnit {

+	/**

+	 * The default value of the '{@link #isStrict() <em>Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean STRICT_EDEFAULT = true;

+

+	/**

+	 * The cached value of the '{@link #isStrict() <em>Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean strict = STRICT_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected QueuedUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.QUEUED_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean isStrict() {

+		return strict;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setStrict(boolean newStrict) {

+		boolean oldStrict = strict;

+		strict = newStrict;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.QUEUED_UNIT__STRICT, oldStrict, strict));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void init() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.QUEUED_UNIT__STRICT:

+				return isStrict();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.QUEUED_UNIT__STRICT:

+				setStrict((Boolean)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.QUEUED_UNIT__STRICT:

+				setStrict(STRICT_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.QUEUED_UNIT__STRICT:

+				return strict != STRICT_EDEFAULT;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (strict: ");

+		result.append(strict);

+		result.append(')');

+		return result.toString();

+	}

+

+} //QueuedUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/RefactoringUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/RefactoringUnitImpl.java
new file mode 100644
index 0000000..fc266ab
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/RefactoringUnitImpl.java
@@ -0,0 +1,326 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.draw2d.RoundedRectangle;

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.InputPort;

+import comrel.RefactoringUnit;

+import comrel.SequentialUnit;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Refactoring Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.RefactoringUnitImpl#getName <em>Name</em>}</li>

+ *   <li>{@link comrel.impl.RefactoringUnitImpl#getSeqExecutionOrder <em>Seq Execution Order</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class RefactoringUnitImpl extends EObjectImpl implements RefactoringUnit {

+	

+	public RoundedRectangle figure;

+	

+	/**

+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String NAME_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getName()

+	 * @generated

+	 * @ordered

+	 */

+	protected String name = NAME_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getSeqExecutionOrder() <em>Seq Execution Order</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSeqExecutionOrder()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final int SEQ_EXECUTION_ORDER_EDEFAULT = 0;

+

+	/**

+	 * The cached value of the '{@link #getSeqExecutionOrder() <em>Seq Execution Order</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSeqExecutionOrder()

+	 * @generated

+	 * @ordered

+	 */

+	protected int seqExecutionOrder = SEQ_EXECUTION_ORDER_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected RefactoringUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.REFACTORING_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+		return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName) {

+		this.setName(newName, true);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getSeqExecutionOrder() {

+		return seqExecutionOrder;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSeqExecutionOrder(int newSeqExecutionOrder) {

+		int oldSeqExecutionOrder = seqExecutionOrder;

+		this.setSeqExecutionOrder(newSeqExecutionOrder,

+				this.eContainer() instanceof SequentialUnit);

+

+

+		// seqExecutionOrder = newSeqExecutionOrder;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(

+					this,

+					Notification.SET,

+					ComrelPackage.REFACTORING_UNIT__SEQ_EXECUTION_ORDER,

+					oldSeqExecutionOrder, seqExecutionOrder));

+		if(figure != null) {

+			setFigureLabel(":"+this.getName() + " - #" + this.getSeqExecutionOrder());

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<InputPort> getAllInputPorts() {

+		// TODO: implement this method

+		// Ensure that you remove @generated or mark it @generated NOT

+		throw new UnsupportedOperationException();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSeqExecutionOrder(int seqExecutionOrder, boolean superCall) {

+		if (superCall) {

+			SequentialUnit seqUnit = null;

+			if (this.eContainer() instanceof SequentialUnit) {

+				seqUnit = (SequentialUnit) this.eContainer();

+			}

+

+			if (seqUnit != null) {

+				int lastIndex = seqUnit.getRefactoringUnits().size();

+				boolean condition = seqExecutionOrder > 0;

+

+				condition &= lastIndex >= seqExecutionOrder;

+				if (condition) {

+					seqUnit.getRefactoringUnits().move(seqExecutionOrder - 1,

+							this);

+				} else {

+					if (seqExecutionOrder <= 0) {

+						seqUnit.getRefactoringUnits().move(0, this);

+					} else {

+						seqUnit.getRefactoringUnits().move(lastIndex - 1, this);

+					}

+				}

+				seqUnit.updateSeqExecutionOrder();

+			}

+		} else {

+			this.seqExecutionOrder = seqExecutionOrder;

+		}

+		if(figure != null) {

+			setFigureLabel(":"+this.getName() + " - #" + this.getSeqExecutionOrder());

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setName(String newName, boolean updateContainer) {

+		String oldName = name;

+		name = newName;

+		if (updateContainer) {

+			if (this.eContainer() != null) {

+				if (this.eContainer() instanceof CompositeRefactoring) {

+					((CompositeRefactoring) this.eContainer()).setName(newName,

+							false);

+				}

+			}

+		}

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET,

+					ComrelPackage.REFACTORING_UNIT__NAME, oldName,

+					name));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.REFACTORING_UNIT__NAME:

+				return getName();

+			case ComrelPackage.REFACTORING_UNIT__SEQ_EXECUTION_ORDER:

+				return getSeqExecutionOrder();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.REFACTORING_UNIT__NAME:

+				setName((String)newValue);

+				return;

+			case ComrelPackage.REFACTORING_UNIT__SEQ_EXECUTION_ORDER:

+				setSeqExecutionOrder((Integer)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.REFACTORING_UNIT__NAME:

+				setName(NAME_EDEFAULT);

+				return;

+			case ComrelPackage.REFACTORING_UNIT__SEQ_EXECUTION_ORDER:

+				setSeqExecutionOrder(SEQ_EXECUTION_ORDER_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.REFACTORING_UNIT__NAME:

+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);

+			case ComrelPackage.REFACTORING_UNIT__SEQ_EXECUTION_ORDER:

+				return seqExecutionOrder != SEQ_EXECUTION_ORDER_EDEFAULT;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (name: ");

+		result.append(name);

+		result.append(", seqExecutionOrder: ");

+		result.append(seqExecutionOrder);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public RoundedRectangle getFigure() {

+		return figure;

+	}

+

+	public void setFigure(RoundedRectangle figure) {

+		this.figure = figure;

+		setFigureLabel(":"+this.getDesc() + " - #" + this.getSeqExecutionOrder());

+	}

+	

+	public String getDesc(){

+		return "";

+	}

+	

+	public void setFigureLabel(String text) {

+		if(figure!=null){

+		WrappingLabel label = (WrappingLabel) figure.getChildren().get(0);

+		label.setText(text);

+		}

+	}

+

+} //RefactoringUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SequentialUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SequentialUnitImpl.java
new file mode 100644
index 0000000..05afe69
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SequentialUnitImpl.java
@@ -0,0 +1,404 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.ComrelPackage;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.RefactoringUnit;

+import comrel.SequentialUnit;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Sequential Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SequentialUnitImpl#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.impl.SequentialUnitImpl#getRefactoringUnits <em>Refactoring Units</em>}</li>

+ *   <li>{@link comrel.impl.SequentialUnitImpl#getInputPorts <em>Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.SequentialUnitImpl#isStrict <em>Strict</em>}</li>

+ *   <li>{@link comrel.impl.SequentialUnitImpl#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.impl.SequentialUnitImpl#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SequentialUnitImpl extends CompositeUnitImpl implements SequentialUnit {

+	/**

+	 * The cached value of the '{@link #getHelperUnits() <em>Helper Units</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<HelperUnit> helperUnits;

+

+	/**

+	 * The cached value of the '{@link #getRefactoringUnits() <em>Refactoring Units</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getRefactoringUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<RefactoringUnit> refactoringUnits;

+

+	/**

+	 * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<InputPort> inputPorts;

+

+	/**

+	 * The default value of the '{@link #isStrict() <em>Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean STRICT_EDEFAULT = true;

+

+	/**

+	 * The cached value of the '{@link #isStrict() <em>Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean strict = STRICT_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Sequential Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LBL_STRICT_EDEFAULT = "strict";

+

+	/**

+	 * The cached value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected String lblStrict = LBL_STRICT_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SequentialUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SEQUENTIAL_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<HelperUnit> getHelperUnits() {

+		if (helperUnits == null) {

+			helperUnits = new EObjectContainmentEList<HelperUnit>(HelperUnit.class, this, ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS);

+		}

+		return helperUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<RefactoringUnit> getRefactoringUnits() {

+		if (refactoringUnits == null) {

+			refactoringUnits = new EObjectContainmentEList<RefactoringUnit>(RefactoringUnit.class, this, ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS);

+		}

+		return refactoringUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<InputPort> getInputPorts() {

+		if (inputPorts == null) {

+			inputPorts = new EObjectContainmentEList<InputPort>(InputPort.class, this, ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS);

+		}

+		return inputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean isStrict() {

+		return strict;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated NOT

+	 */

+	public void setStrict(boolean newStrict) {

+		boolean oldStrict = strict;

+		strict = newStrict;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SEQUENTIAL_UNIT__STRICT, oldStrict, strict));

+		if (newStrict) setLblStrict("strict");

+		else setLblStrict("non strict");

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLblStrict() {

+		return lblStrict;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLblStrict(String newLblStrict) {

+		String oldLblStrict = lblStrict;

+		lblStrict = newLblStrict;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SEQUENTIAL_UNIT__LBL_STRICT, oldLblStrict, lblStrict));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void updateSeqExecutionOrder() {

+		int index;

+		for(RefactoringUnit unit : this.getRefactoringUnits()) {

+			index = this.getRefactoringUnits().indexOf(unit)+1;

+			unit.setSeqExecutionOrder(index,false);

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS:

+				return ((InternalEList<?>)getHelperUnits()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS:

+				return ((InternalEList<?>)getRefactoringUnits()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS:

+				return ((InternalEList<?>)getInputPorts()).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 ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS:

+				return getHelperUnits();

+			case ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS:

+				return getRefactoringUnits();

+			case ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS:

+				return getInputPorts();

+			case ComrelPackage.SEQUENTIAL_UNIT__STRICT:

+				return isStrict();

+			case ComrelPackage.SEQUENTIAL_UNIT__TYPE:

+				return getType();

+			case ComrelPackage.SEQUENTIAL_UNIT__LBL_STRICT:

+				return getLblStrict();

+		}

+		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 ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				getHelperUnits().addAll((Collection<? extends HelperUnit>)newValue);

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS:

+				getRefactoringUnits().clear();

+				getRefactoringUnits().addAll((Collection<? extends RefactoringUnit>)newValue);

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS:

+				getInputPorts().clear();

+				getInputPorts().addAll((Collection<? extends InputPort>)newValue);

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__STRICT:

+				setStrict((Boolean)newValue);

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__LBL_STRICT:

+				setLblStrict((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS:

+				getRefactoringUnits().clear();

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS:

+				getInputPorts().clear();

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__STRICT:

+				setStrict(STRICT_EDEFAULT);

+				return;

+			case ComrelPackage.SEQUENTIAL_UNIT__LBL_STRICT:

+				setLblStrict(LBL_STRICT_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SEQUENTIAL_UNIT__HELPER_UNITS:

+				return helperUnits != null && !helperUnits.isEmpty();

+			case ComrelPackage.SEQUENTIAL_UNIT__REFACTORING_UNITS:

+				return refactoringUnits != null && !refactoringUnits.isEmpty();

+			case ComrelPackage.SEQUENTIAL_UNIT__INPUT_PORTS:

+				return inputPorts != null && !inputPorts.isEmpty();

+			case ComrelPackage.SEQUENTIAL_UNIT__STRICT:

+				return strict != STRICT_EDEFAULT;

+			case ComrelPackage.SEQUENTIAL_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+			case ComrelPackage.SEQUENTIAL_UNIT__LBL_STRICT:

+				return LBL_STRICT_EDEFAULT == null ? lblStrict != null : !LBL_STRICT_EDEFAULT.equals(lblStrict);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (strict: ");

+		result.append(strict);

+		result.append(", type: ");

+		result.append(type);

+		result.append(", lblStrict: ");

+		result.append(lblStrict);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public EList<InputPort> getAllInputPorts() {

+		return this.getInputPorts();

+	}

+

+} //SequentialUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFeatureHelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFeatureHelperImpl.java
new file mode 100644
index 0000000..25bcb39
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFeatureHelperImpl.java
@@ -0,0 +1,179 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.SingleFeatureHelper;

+import comrel.SingleOutputPort;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Feature Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SingleFeatureHelperImpl#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleFeatureHelperImpl extends FeatureHelperImpl implements SingleFeatureHelper {

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleOutputPort outputPort;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFeatureHelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_FEATURE_HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(SingleOutputPort newOutputPort, NotificationChain msgs) {

+		SingleOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(SingleOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT:

+				return getOutputPort();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_HELPER__OUTPUT_PORT:

+				return outputPort != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //SingleFeatureHelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFeatureUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFeatureUnitImpl.java
new file mode 100644
index 0000000..d7766d6
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFeatureUnitImpl.java
@@ -0,0 +1,422 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+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.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiInputPort;

+import comrel.SingleFeatureHelper;

+import comrel.SingleFeatureUnit;

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Feature Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SingleFeatureUnitImpl#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.impl.SingleFeatureUnitImpl#getSecondaryInputPorts <em>Secondary Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.SingleFeatureUnitImpl#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.impl.SingleFeatureUnitImpl#getSingleFeatureHelper <em>Single Feature Helper</em>}</li>

+ *   <li>{@link comrel.impl.SingleFeatureUnitImpl#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleFeatureUnitImpl extends FeatureUnitImpl implements SingleFeatureUnit {

+	/**

+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleInputPort inputPort;

+

+	/**

+	 * The cached value of the '{@link #getSecondaryInputPorts() <em>Secondary Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSecondaryInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<MultiInputPort> secondaryInputPorts;

+

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleOutputPort outputPort;

+

+	/**

+	 * The cached value of the '{@link #getSingleFeatureHelper() <em>Single Feature Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSingleFeatureHelper()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleFeatureHelper singleFeatureHelper;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Single Feature Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFeatureUnitImpl() {

+		super();

+	}

+

+	public SingleFeatureUnitImpl(SingleFeatureHelper helper) {

+		this.singleFeatureHelper = helper;

+		this.name = helper.getName();

+		this.helperUnitId = helper.getHelperId();

+		this.description = helper.getDescription();

+		this.namespaceUri = helper.getNamespaceUri();

+		SingleInputPort inputPort = ComrelFactory.eINSTANCE.createSingleInputPort();

+		SingleOutputPort outputPort = ComrelFactory.eINSTANCE.createSingleOutputPort();

+		inputPort.setDescription(helper.getInputPort().getDescription());

+		inputPort.setName(helper.getInputPort().getName());

+		inputPort.setType(helper.getInputPort().getType());

+

+		this.setInputPort(inputPort);

+		outputPort.setDescription(helper.getOutputPort().getDescription());

+		outputPort.setName(helper.getOutputPort().getName());

+		outputPort.setType(helper.getOutputPort().getType());

+

+		this.setOutputPort(outputPort);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_FEATURE_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort getInputPort() {

+		return inputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetInputPort(SingleInputPort newInputPort, NotificationChain msgs) {

+		SingleInputPort oldInputPort = inputPort;

+		inputPort = newInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT, oldInputPort, newInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setInputPort(SingleInputPort newInputPort) {

+		if (newInputPort != inputPort) {

+			NotificationChain msgs = null;

+			if (inputPort != null)

+				msgs = ((InternalEObject)inputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT, null, msgs);

+			if (newInputPort != null)

+				msgs = ((InternalEObject)newInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT, null, msgs);

+			msgs = basicSetInputPort(newInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT, newInputPort, newInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<MultiInputPort> getSecondaryInputPorts() {

+		if (secondaryInputPorts == null) {

+			secondaryInputPorts = new EObjectContainmentEList<MultiInputPort>(MultiInputPort.class, this, ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS);

+		}

+		return secondaryInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(SingleOutputPort newOutputPort, NotificationChain msgs) {

+		SingleOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(SingleOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFeatureHelper getSingleFeatureHelper() {

+		if (singleFeatureHelper != null && singleFeatureHelper.eIsProxy()) {

+			InternalEObject oldSingleFeatureHelper = (InternalEObject)singleFeatureHelper;

+			singleFeatureHelper = (SingleFeatureHelper)eResolveProxy(oldSingleFeatureHelper);

+			if (singleFeatureHelper != oldSingleFeatureHelper) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER, oldSingleFeatureHelper, singleFeatureHelper));

+			}

+		}

+		return singleFeatureHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFeatureHelper basicGetSingleFeatureHelper() {

+		return singleFeatureHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSingleFeatureHelper(SingleFeatureHelper newSingleFeatureHelper) {

+		if(ComrelUtil.objectIsSettable(this) || this.singleFeatureHelper==null){

+			SingleFeatureHelper oldSingleFeatureHelper = singleFeatureHelper;

+			singleFeatureHelper = newSingleFeatureHelper;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER, oldSingleFeatureHelper, singleFeatureHelper));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT:

+				return basicSetInputPort(null, msgs);

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				return ((InternalEList<?>)getSecondaryInputPorts()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT:

+				return getInputPort();

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				return getSecondaryInputPorts();

+			case ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT:

+				return getOutputPort();

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER:

+				if (resolve) return getSingleFeatureHelper();

+				return basicGetSingleFeatureHelper();

+			case ComrelPackage.SINGLE_FEATURE_UNIT__TYPE:

+				return getType();

+		}

+		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 ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT:

+				setInputPort((SingleInputPort)newValue);

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				getSecondaryInputPorts().clear();

+				getSecondaryInputPorts().addAll((Collection<? extends MultiInputPort>)newValue);

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)newValue);

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER:

+				setSingleFeatureHelper((SingleFeatureHelper)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT:

+				setInputPort((SingleInputPort)null);

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				getSecondaryInputPorts().clear();

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)null);

+				return;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER:

+				setSingleFeatureHelper((SingleFeatureHelper)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FEATURE_UNIT__INPUT_PORT:

+				return inputPort != null;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SECONDARY_INPUT_PORTS:

+				return secondaryInputPorts != null && !secondaryInputPorts.isEmpty();

+			case ComrelPackage.SINGLE_FEATURE_UNIT__OUTPUT_PORT:

+				return outputPort != null;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__SINGLE_FEATURE_HELPER:

+				return singleFeatureHelper != null;

+			case ComrelPackage.SINGLE_FEATURE_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

+} //SingleFeatureUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFilterHelperImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFilterHelperImpl.java
new file mode 100644
index 0000000..8481390
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFilterHelperImpl.java
@@ -0,0 +1,179 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.SingleFilterHelper;

+import comrel.SingleOutputPort;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Filter Helper</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SingleFilterHelperImpl#getOutputPort <em>Output Port</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleFilterHelperImpl extends FilterHelperImpl implements SingleFilterHelper {

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleOutputPort outputPort;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFilterHelperImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_FILTER_HELPER;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(SingleOutputPort newOutputPort, NotificationChain msgs) {

+		SingleOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(SingleOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT:

+				return getOutputPort();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_HELPER__OUTPUT_PORT:

+				return outputPort != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //SingleFilterHelperImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFilterUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFilterUnitImpl.java
new file mode 100644
index 0000000..07634d4
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleFilterUnitImpl.java
@@ -0,0 +1,379 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.MultiInputPort;

+import comrel.SingleFilterHelper;

+import comrel.SingleFilterUnit;

+import comrel.SingleOutputPort;

+import comrel.util.ComrelUtil;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Filter Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SingleFilterUnitImpl#getInputPort <em>Input Port</em>}</li>

+ *   <li>{@link comrel.impl.SingleFilterUnitImpl#getOutputPort <em>Output Port</em>}</li>

+ *   <li>{@link comrel.impl.SingleFilterUnitImpl#getSingleFilterHelper <em>Single Filter Helper</em>}</li>

+ *   <li>{@link comrel.impl.SingleFilterUnitImpl#getType <em>Type</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleFilterUnitImpl extends FilterUnitImpl implements SingleFilterUnit {

+	/**

+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiInputPort inputPort;

+

+	/**

+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getOutputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleOutputPort outputPort;

+

+	/**

+	 * The cached value of the '{@link #getSingleFilterHelper() <em>Single Filter Helper</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSingleFilterHelper()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleFilterHelper singleFilterHelper;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Single Filter Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleFilterUnitImpl() {

+		super();

+	}

+

+	public SingleFilterUnitImpl(SingleFilterHelper helper) {

+		this.singleFilterHelper = helper;

+		this.helperUnitId = helper.getHelperId();

+		this.name = helper.getName();

+		this.description = helper.getDescription();

+		this.namespaceUri = helper.getNamespaceUri();

+		SingleOutputPort outPort = ComrelFactory.eINSTANCE.createSingleOutputPort();

+		MultiInputPort inPort = ComrelFactory.eINSTANCE.createMultiInputPort();

+		inPort.setDescription(helper.getInputPort().getDescription());

+		inPort.setName(helper.getInputPort().getName());

+		inPort.setType(helper.getInputPort().getType());

+

+		this.setInputPort(inPort);

+		outPort.setDescription(helper.getOutputPort().getDescription());

+		outPort.setName(helper.getOutputPort().getName());

+		outPort.setType(helper.getOutputPort().getType());

+

+		this.setOutputPort(outPort);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_FILTER_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort getInputPort() {

+		return inputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetInputPort(MultiInputPort newInputPort, NotificationChain msgs) {

+		MultiInputPort oldInputPort = inputPort;

+		inputPort = newInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT, oldInputPort, newInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setInputPort(MultiInputPort newInputPort) {

+		if (newInputPort != inputPort) {

+			NotificationChain msgs = null;

+			if (inputPort != null)

+				msgs = ((InternalEObject)inputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT, null, msgs);

+			if (newInputPort != null)

+				msgs = ((InternalEObject)newInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT, null, msgs);

+			msgs = basicSetInputPort(newInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT, newInputPort, newInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleOutputPort getOutputPort() {

+		return outputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetOutputPort(SingleOutputPort newOutputPort, NotificationChain msgs) {

+		SingleOutputPort oldOutputPort = outputPort;

+		outputPort = newOutputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT, oldOutputPort, newOutputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setOutputPort(SingleOutputPort newOutputPort) {

+		if (newOutputPort != outputPort) {

+			NotificationChain msgs = null;

+			if (outputPort != null)

+				msgs = ((InternalEObject)outputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT, null, msgs);

+			if (newOutputPort != null)

+				msgs = ((InternalEObject)newOutputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT, null, msgs);

+			msgs = basicSetOutputPort(newOutputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT, newOutputPort, newOutputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFilterHelper getSingleFilterHelper() {

+		if (singleFilterHelper != null && singleFilterHelper.eIsProxy()) {

+			InternalEObject oldSingleFilterHelper = (InternalEObject)singleFilterHelper;

+			singleFilterHelper = (SingleFilterHelper)eResolveProxy(oldSingleFilterHelper);

+			if (singleFilterHelper != oldSingleFilterHelper) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER, oldSingleFilterHelper, singleFilterHelper));

+			}

+		}

+		return singleFilterHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleFilterHelper basicGetSingleFilterHelper() {

+		return singleFilterHelper;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSingleFilterHelper(SingleFilterHelper newSingleFilterHelper) {

+		if(ComrelUtil.objectIsSettable(this) || singleFilterHelper == null){

+			SingleFilterHelper oldSingleFilterHelper = singleFilterHelper;

+			singleFilterHelper = newSingleFilterHelper;

+			if (eNotificationRequired())

+				eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER, oldSingleFilterHelper, singleFilterHelper));

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT:

+				return basicSetInputPort(null, msgs);

+			case ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT:

+				return basicSetOutputPort(null, 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 ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT:

+				return getInputPort();

+			case ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT:

+				return getOutputPort();

+			case ComrelPackage.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER:

+				if (resolve) return getSingleFilterHelper();

+				return basicGetSingleFilterHelper();

+			case ComrelPackage.SINGLE_FILTER_UNIT__TYPE:

+				return getType();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT:

+				setInputPort((MultiInputPort)newValue);

+				return;

+			case ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)newValue);

+				return;

+			case ComrelPackage.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER:

+				setSingleFilterHelper((SingleFilterHelper)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT:

+				setInputPort((MultiInputPort)null);

+				return;

+			case ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT:

+				setOutputPort((SingleOutputPort)null);

+				return;

+			case ComrelPackage.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER:

+				setSingleFilterHelper((SingleFilterHelper)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_FILTER_UNIT__INPUT_PORT:

+				return inputPort != null;

+			case ComrelPackage.SINGLE_FILTER_UNIT__OUTPUT_PORT:

+				return outputPort != null;

+			case ComrelPackage.SINGLE_FILTER_UNIT__SINGLE_FILTER_HELPER:

+				return singleFilterHelper != null;

+			case ComrelPackage.SINGLE_FILTER_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(')');

+		return result.toString();

+	}

+

+} //SingleFilterUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleInputPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleInputPortImpl.java
new file mode 100644
index 0000000..61b12eb
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleInputPortImpl.java
@@ -0,0 +1,90 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+

+import comrel.CompositeRefactoring;

+import comrel.ComrelPackage;

+import comrel.PortMapping;

+import comrel.SingleInputPort;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Input Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleInputPortImpl extends SinglePortImpl implements SingleInputPort {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleInputPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_INPUT_PORT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Boolean isMappingTarget() {

+		EObject container = this.eContainer();

+		if (container == null) return true;

+		while(container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		CompositeRefactoring refSys;

+		if(container instanceof CompositeRefactoring) {

+			refSys = (CompositeRefactoring) container;

+		}

+		else {

+			throw new UnsupportedOperationException("Container 'RefactoringSystem' doesn't exists");

+		}

+		EList<PortMapping> mappings = refSys.getPortMappings();

+		for(PortMapping m : mappings) {

+			if(m.getTarget() == this) {

+				return true;

+			}

+		}

+		return false;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Boolean isRootPort() {

+		EObject container = this.eContainer();

+		if (container == null) throw new UnsupportedOperationException("Container doesn't exists");

+		if(container.eContainer() instanceof CompositeRefactoring) {

+			return true;

+		}

+		else {

+			return false;

+		}

+	}

+

+} //SingleInputPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleOutputPortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleOutputPortImpl.java
new file mode 100644
index 0000000..26dd68c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleOutputPortImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.SingleOutputPort;

+

+import org.eclipse.emf.ecore.EClass;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Output Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleOutputPortImpl extends SinglePortImpl implements SingleOutputPort {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleOutputPortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_OUTPUT_PORT;

+	}

+

+} //SingleOutputPortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SinglePortImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SinglePortImpl.java
new file mode 100644
index 0000000..f2b089b
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SinglePortImpl.java
@@ -0,0 +1,166 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.SinglePort;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Port</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SinglePortImpl#getValue <em>Value</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class SinglePortImpl extends PortImpl implements SinglePort {

+	/**

+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final Object VALUE_EDEFAULT = null;

+

+	/**

+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getValue()

+	 * @generated

+	 * @ordered

+	 */

+	protected Object value = VALUE_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SinglePortImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_PORT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Object getValue() {

+		return value;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setValue(Object newValue) {

+		Object oldValue = value;

+		value = newValue;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_PORT__VALUE, oldValue, value));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT__VALUE:

+				return getValue();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT__VALUE:

+				setValue(newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT__VALUE:

+				setValue(VALUE_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT__VALUE:

+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (value: ");

+		result.append(value);

+		result.append(')');

+		return result.toString();

+	}

+

+} //SinglePortImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SinglePortMappingImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SinglePortMappingImpl.java
new file mode 100644
index 0000000..933bb4f
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SinglePortMappingImpl.java
@@ -0,0 +1,245 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import comrel.ComrelPackage;

+import comrel.SingleInputPort;

+import comrel.SinglePort;

+import comrel.SinglePortMapping;

+

+import org.eclipse.emf.common.notify.Notification;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Port Mapping</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SinglePortMappingImpl#getSource <em>Source</em>}</li>

+ *   <li>{@link comrel.impl.SinglePortMappingImpl#getTarget <em>Target</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SinglePortMappingImpl extends PortMappingImpl implements SinglePortMapping {

+	/**

+	 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSource()

+	 * @generated

+	 * @ordered

+	 */

+	protected SinglePort source;

+

+	/**

+	 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getTarget()

+	 * @generated

+	 * @ordered

+	 */

+	protected SingleInputPort target;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SinglePortMappingImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_PORT_MAPPING;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SinglePort getSource() {

+		if (source != null && source.eIsProxy()) {

+			InternalEObject oldSource = (InternalEObject)source;

+			source = (SinglePort)eResolveProxy(oldSource);

+			if (source != oldSource) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.SINGLE_PORT_MAPPING__SOURCE, oldSource, source));

+			}

+		}

+		return source;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SinglePort basicGetSource() {

+		return source;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setSource(SinglePort newSource) {

+		this.resetVisualization();

+		SinglePort oldSource = source;

+		source = newSource;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_PORT_MAPPING__SOURCE, oldSource, source));

+		if(source != null && target != null){

+			if (source.getType() != null) {

+				updatePortTypesAndNames(source.getType(),source.getSingularPortName());

+			} else {

+				updatePortTypesAndNames(target.getType(),target.getSingularPortName());

+			}

+			updateMappingNumber();

+		}

+		else {

+			this.updateCRVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort getTarget() {

+		if (target != null && target.eIsProxy()) {

+			InternalEObject oldTarget = (InternalEObject)target;

+			target = (SingleInputPort)eResolveProxy(oldTarget);

+			if (target != oldTarget) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComrelPackage.SINGLE_PORT_MAPPING__TARGET, oldTarget, target));

+			}

+		}

+		return target;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public SingleInputPort basicGetTarget() {

+		return target;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setTarget(SingleInputPort newTarget) {

+		this.resetVisualization();

+		SingleInputPort oldTarget = target;

+		target = newTarget;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_PORT_MAPPING__TARGET, oldTarget, target));

+		if(source != null && target != null){

+			if (target.getType() != null) {

+				updatePortTypesAndNames(target.getType(),target.getSingularPortName());

+			} else {

+				updatePortTypesAndNames(source.getType(),source.getSingularPortName());

+			}

+			updateMappingNumber();

+		}

+		else {

+			this.updateCRVisualization();

+		}

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT_MAPPING__SOURCE:

+				if (resolve) return getSource();

+				return basicGetSource();

+			case ComrelPackage.SINGLE_PORT_MAPPING__TARGET:

+				if (resolve) return getTarget();

+				return basicGetTarget();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT_MAPPING__SOURCE:

+				setSource((SinglePort)newValue);

+				return;

+			case ComrelPackage.SINGLE_PORT_MAPPING__TARGET:

+				setTarget((SingleInputPort)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT_MAPPING__SOURCE:

+				setSource((SinglePort)null);

+				return;

+			case ComrelPackage.SINGLE_PORT_MAPPING__TARGET:

+				setTarget((SingleInputPort)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_PORT_MAPPING__SOURCE:

+				return source != null;

+			case ComrelPackage.SINGLE_PORT_MAPPING__TARGET:

+				return target != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+} //SinglePortMappingImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleQueuedUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleQueuedUnitImpl.java
new file mode 100644
index 0000000..b4868a1
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/SingleQueuedUnitImpl.java
@@ -0,0 +1,450 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import java.util.Collection;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.common.util.BasicEList;

+import org.eclipse.emf.common.util.EList;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.util.EObjectContainmentEList;

+import org.eclipse.emf.ecore.util.InternalEList;

+

+import comrel.ComrelFactory;

+import comrel.ComrelPackage;

+import comrel.HelperUnit;

+import comrel.InputPort;

+import comrel.MultiInputPort;

+import comrel.RefactoringUnit;

+import comrel.SingleInputPort;

+import comrel.SingleQueuedUnit;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Single Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link comrel.impl.SingleQueuedUnitImpl#getHelperUnits <em>Helper Units</em>}</li>

+ *   <li>{@link comrel.impl.SingleQueuedUnitImpl#getRefactoringUnit <em>Refactoring Unit</em>}</li>

+ *   <li>{@link comrel.impl.SingleQueuedUnitImpl#getSingleInputPorts <em>Single Input Ports</em>}</li>

+ *   <li>{@link comrel.impl.SingleQueuedUnitImpl#getMultiInputPort <em>Multi Input Port</em>}</li>

+ *   <li>{@link comrel.impl.SingleQueuedUnitImpl#getType <em>Type</em>}</li>

+ *   <li>{@link comrel.impl.SingleQueuedUnitImpl#getLblStrict <em>Lbl Strict</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class SingleQueuedUnitImpl extends QueuedUnitImpl implements SingleQueuedUnit {

+	/**

+	 * The cached value of the '{@link #getHelperUnits() <em>Helper Units</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getHelperUnits()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<HelperUnit> helperUnits;

+

+	/**

+	 * The cached value of the '{@link #getRefactoringUnit() <em>Refactoring Unit</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getRefactoringUnit()

+	 * @generated

+	 * @ordered

+	 */

+	protected RefactoringUnit refactoringUnit;

+

+	/**

+	 * The cached value of the '{@link #getSingleInputPorts() <em>Single Input Ports</em>}' containment reference list.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getSingleInputPorts()

+	 * @generated

+	 * @ordered

+	 */

+	protected EList<SingleInputPort> singleInputPorts;

+

+	/**

+	 * The cached value of the '{@link #getMultiInputPort() <em>Multi Input Port</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getMultiInputPort()

+	 * @generated

+	 * @ordered

+	 */

+	protected MultiInputPort multiInputPort;

+

+	/**

+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String TYPE_EDEFAULT = "Single Queued Unit";

+

+	/**

+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getType()

+	 * @generated

+	 * @ordered

+	 */

+	protected String type = TYPE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final String LBL_STRICT_EDEFAULT = "strict";

+

+	/**

+	 * The cached value of the '{@link #getLblStrict() <em>Lbl Strict</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getLblStrict()

+	 * @generated

+	 * @ordered

+	 */

+	protected String lblStrict = LBL_STRICT_EDEFAULT;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected SingleQueuedUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.SINGLE_QUEUED_UNIT;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<HelperUnit> getHelperUnits() {

+		if (helperUnits == null) {

+			helperUnits = new EObjectContainmentEList<HelperUnit>(HelperUnit.class, this, ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS);

+		}

+		return helperUnits;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public RefactoringUnit getRefactoringUnit() {

+		return refactoringUnit;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetRefactoringUnit(RefactoringUnit newRefactoringUnit, NotificationChain msgs) {

+		RefactoringUnit oldRefactoringUnit = refactoringUnit;

+		refactoringUnit = newRefactoringUnit;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT, oldRefactoringUnit, newRefactoringUnit);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setRefactoringUnit(RefactoringUnit newRefactoringUnit) {

+		if (newRefactoringUnit != refactoringUnit) {

+			NotificationChain msgs = null;

+			if (refactoringUnit != null)

+				msgs = ((InternalEObject)refactoringUnit).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT, null, msgs);

+			if (newRefactoringUnit != null)

+				msgs = ((InternalEObject)newRefactoringUnit).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT, null, msgs);

+			msgs = basicSetRefactoringUnit(newRefactoringUnit, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT, newRefactoringUnit, newRefactoringUnit));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public EList<SingleInputPort> getSingleInputPorts() {

+		if (singleInputPorts == null) {

+			singleInputPorts = new EObjectContainmentEList<SingleInputPort>(SingleInputPort.class, this, ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS);

+		}

+		return singleInputPorts;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public MultiInputPort getMultiInputPort() {

+		return multiInputPort;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetMultiInputPort(MultiInputPort newMultiInputPort, NotificationChain msgs) {

+		MultiInputPort oldMultiInputPort = multiInputPort;

+		multiInputPort = newMultiInputPort;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT, oldMultiInputPort, newMultiInputPort);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setMultiInputPort(MultiInputPort newMultiInputPort) {

+		if (newMultiInputPort != multiInputPort) {

+			NotificationChain msgs = null;

+			if (multiInputPort != null)

+				msgs = ((InternalEObject)multiInputPort).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT, null, msgs);

+			if (newMultiInputPort != null)

+				msgs = ((InternalEObject)newMultiInputPort).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT, null, msgs);

+			msgs = basicSetMultiInputPort(newMultiInputPort, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT, newMultiInputPort, newMultiInputPort));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getType() {

+		return type;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLblStrict() {

+		return lblStrict;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setLblStrict(String newLblStrict) {

+		String oldLblStrict = lblStrict;

+		lblStrict = newLblStrict;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, ComrelPackage.SINGLE_QUEUED_UNIT__LBL_STRICT, oldLblStrict, lblStrict));

+	}

+	

+	@Override

+	public void setStrict(boolean newStrict) {

+		super.setStrict(newStrict);

+		if (newStrict) setLblStrict("strict");

+		else setLblStrict("non strict");

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS:

+				return ((InternalEList<?>)getHelperUnits()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT:

+				return basicSetRefactoringUnit(null, msgs);

+			case ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return ((InternalEList<?>)getSingleInputPorts()).basicRemove(otherEnd, msgs);

+			case ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT:

+				return basicSetMultiInputPort(null, 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 ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS:

+				return getHelperUnits();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT:

+				return getRefactoringUnit();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return getSingleInputPorts();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT:

+				return getMultiInputPort();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__TYPE:

+				return getType();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__LBL_STRICT:

+				return getLblStrict();

+		}

+		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 ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				getHelperUnits().addAll((Collection<? extends HelperUnit>)newValue);

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT:

+				setRefactoringUnit((RefactoringUnit)newValue);

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				getSingleInputPorts().clear();

+				getSingleInputPorts().addAll((Collection<? extends SingleInputPort>)newValue);

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT:

+				setMultiInputPort((MultiInputPort)newValue);

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__LBL_STRICT:

+				setLblStrict((String)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS:

+				getHelperUnits().clear();

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT:

+				setRefactoringUnit((RefactoringUnit)null);

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				getSingleInputPorts().clear();

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT:

+				setMultiInputPort((MultiInputPort)null);

+				return;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__LBL_STRICT:

+				setLblStrict(LBL_STRICT_EDEFAULT);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case ComrelPackage.SINGLE_QUEUED_UNIT__HELPER_UNITS:

+				return helperUnits != null && !helperUnits.isEmpty();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__REFACTORING_UNIT:

+				return refactoringUnit != null;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__SINGLE_INPUT_PORTS:

+				return singleInputPorts != null && !singleInputPorts.isEmpty();

+			case ComrelPackage.SINGLE_QUEUED_UNIT__MULTI_INPUT_PORT:

+				return multiInputPort != null;

+			case ComrelPackage.SINGLE_QUEUED_UNIT__TYPE:

+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);

+			case ComrelPackage.SINGLE_QUEUED_UNIT__LBL_STRICT:

+				return LBL_STRICT_EDEFAULT == null ? lblStrict != null : !LBL_STRICT_EDEFAULT.equals(lblStrict);

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (type: ");

+		result.append(type);

+		result.append(", lblStrict: ");

+		result.append(lblStrict);

+		result.append(')');

+		return result.toString();

+	}

+	

+	public EList<InputPort> getAllInputPorts() {

+		EList<InputPort> inputPorts = new BasicEList<InputPort>();

+		inputPorts.addAll(this.getSingleInputPorts());

+		inputPorts.add(this.getMultiInputPort());

+		return inputPorts;

+	}

+	

+	public void init() {

+		MultiInputPort port = ComrelFactory.eINSTANCE.createMultiInputPort();

+		this.multiInputPort = port;

+	}

+

+} //SingleQueuedUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/impl/TwicedQueuedUnitImpl.java b/org.eclipse.emf.refactor.comrel/src/comrel/impl/TwicedQueuedUnitImpl.java
new file mode 100644
index 0000000..0ce8370
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/impl/TwicedQueuedUnitImpl.java
@@ -0,0 +1,43 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.impl;

+

+import org.eclipse.emf.ecore.EClass;

+

+import comrel.ComrelPackage;

+import comrel.TwicedQueuedUnit;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Twiced Queued Unit</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * </p>

+ *

+ * @generated

+ */

+public abstract class TwicedQueuedUnitImpl extends QueuedUnitImpl implements TwicedQueuedUnit {

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TwicedQueuedUnitImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return ComrelPackage.Literals.TWICED_QUEUED_UNIT;

+	}

+

+} //TwicedQueuedUnitImpl

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/util/Colors.java b/org.eclipse.emf.refactor.comrel/src/comrel/util/Colors.java
new file mode 100644
index 0000000..d9d2402
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/util/Colors.java
@@ -0,0 +1,176 @@
+package comrel.util;

+

+import java.util.ArrayList;

+

+import javax.swing.JFrame;

+import javax.swing.JTextPane;

+import javax.swing.text.DefaultStyledDocument;

+import javax.swing.text.SimpleAttributeSet;

+import javax.swing.text.StyleConstants;

+

+import org.eclipse.swt.graphics.Color;

+

+public class Colors {

+

+	/**

+	 * Liefert der drei Grundfarben "Red", "Green" und "Blue"

+	 * 

+	 * @return Liste der Grundfarben

+	 */

+	public static ArrayList<Color> groundColors() {

+		ArrayList<Color> result = new ArrayList<Color>();

+		result.add(new Color(null, 255, 0, 0));

+		result.add(new Color(null, 0, 255, 0));

+		result.add(new Color(null, 0, 0, 255));

+		return result;

+	}

+

+	/**

+	 * Liefert die Mischfarben der drei Grundfarben "Magenta", "Yellow" und

+	 * "Cyen"

+	 * 

+	 * @return Liste aller Mischfarben aus den drei Grundfarben

+	 */

+	public static ArrayList<Color> groundColors2() {

+		ArrayList<Color> result = new ArrayList<Color>();

+		result.add(new Color(null, 255, 255, 0));

+		result.add(new Color(null, 0, 255, 255));

+		result.add(new Color(null, 255, 0, 255));

+		return result;

+	}

+

+	/**

+	 * Liefert zu einem Index eine hier berechnete Farbe Als Grundlage wird der

+	 * Farbkreis genommen, indem die Farben zwischen den Farben aus den

+	 * einzelnen Mischungen erstellt werden. Jedoch liefert die Methode alle

+	 * Farben als Liste, angefangen mit den drei Grundfarben, gefolgt von den

+	 * drei Mischfarben, gefolgt von den Mischfarben dieser Farben etc.

+	 * 

+	 * @param i Index

+	 * @return Farbkreis als selbstdefinierte Liste

+	 */

+	public static ArrayList<Color> getColors(int i) {

+		ArrayList<Color> result = new ArrayList<Color>();

+		/** mergeList entspricht dem Farbkreis*/

+		ArrayList<Color> mergeList = mergeLists(groundColors(), groundColors2());

+		result.addAll(groundColors());

+		result.addAll(groundColors2());

+		int k = 2;

+		ArrayList<Color> newColors;

+		Color newColor;

+		int r;

+		int g;

+		int b;

+		Color one;

+		Color two;

+		

+		/** In der folgenden Schleife werden die Farben des Farbkreises gemischt */

+		while (k < i) { // Schleife endet, wenn genug Farben gemisch worden sind

+			newColors = new ArrayList<Color>();

+			for (int j = 0; j < mergeList.size(); j++) {

+				one = mergeList.get(j);

+				if (j + 1 < mergeList.size()) {

+					two = mergeList.get((j + 1));

+				} else {

+					two = mergeList.get(0);

+				}

+				r = (one.getRed() + two.getRed()) / 2;

+				b = (one.getBlue() + two.getBlue()) / 2;

+				g = (one.getGreen() + two.getGreen()) / 2;

+				newColor = new Color(null, r, g, b);

+				newColors.add(newColor);

+				k++;

+				if (k >= i) {

+					break;

+				}

+

+			}

+			mergeList = mergeLists(mergeList, newColors);

+			result.addAll(newColors);

+		}

+		return result;

+	}

+

+	/**

+	 * Merged zwei Listen gleicher Länge

+	 * @param old

+	 * @param newColors

+	 * @return

+	 */

+	private static ArrayList<Color> mergeLists(ArrayList<Color> old,

+			ArrayList<Color> newColors) {

+		ArrayList<Color> result = new ArrayList<Color>();

+		result.addAll(old);

+		int i = 1;

+		for (Color color : newColors) {

+			if (i < result.size()) {

+				result.add(i, color);

+				i += 2;

+			} else {

+				result.add(color);

+			}

+		}

+		return result;

+

+	}

+

+	

+	/**

+	 * Mainmethode zum Testen

+	 * @param args

+	 */

+	public static void main(String... args) {

+

+		JFrame frame = new JFrame();

+

+		AttributedTextPane pane = new AttributedTextPane();

+

+		frame.add(pane);

+		frame.setBounds(100, 100, 600, 400);

+		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

+		frame.setVisible(true);

+		int i = 1;

+		for (Color color : getColors(200)) {

+			String s = "        ";

+			if (i++ % 10 == 0) {

+				s += "\n";

+			}

+			pane.append(s, color);

+		}

+

+	}

+

+	/** subclass of JTextPane allowing color attributes */

+	static class AttributedTextPane extends JTextPane {

+		/**

+		 * 

+		 */

+		private static final long serialVersionUID = 1725425425133024244L;

+		private DefaultStyledDocument m_defaultStyledDocument = new DefaultStyledDocument();

+

+		/** constructor */

+		public AttributedTextPane() {

+			this.setDocument(m_defaultStyledDocument);

+		}

+

+		/** append text */

+		public void append(String string, Color color) {

+			try {

+				SimpleAttributeSet attr = new SimpleAttributeSet();

+				StyleConstants.setBackground(attr,

+						new java.awt.Color(color.getRed(), color.getGreen(),

+								color.getBlue()));

+				StyleConstants.setFontSize(attr, 20);

+				m_defaultStyledDocument.insertString(

+						m_defaultStyledDocument.getLength(), string, attr);

+			} catch (Exception e) {

+				e.printStackTrace();

+			}

+		}

+

+		/** append text in default color */

+		public void append(String string) {

+			append(string, new Color(null, 255, 255, 255));

+		}

+	}

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelAdapterFactory.java b/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelAdapterFactory.java
new file mode 100644
index 0000000..f5c9933
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelAdapterFactory.java
@@ -0,0 +1,862 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.util;

+

+import comrel.*;

+

+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;

+

+/**

+ * <!-- 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 comrel.ComrelPackage

+ * @generated

+ */

+public class ComrelAdapterFactory extends AdapterFactoryImpl {

+	/**

+	 * The cached model package.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected static ComrelPackage modelPackage;

+

+	/**

+	 * Creates an instance of the adapter factory.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelAdapterFactory() {

+		if (modelPackage == null) {

+			modelPackage = ComrelPackage.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 ComrelSwitch<Adapter> modelSwitch =

+		new ComrelSwitch<Adapter>() {

+			@Override

+			public Adapter caseCompositeRefactoring(CompositeRefactoring object) {

+				return createCompositeRefactoringAdapter();

+			}

+			@Override

+			public Adapter caseNamedElement(NamedElement object) {

+				return createNamedElementAdapter();

+			}

+			@Override

+			public Adapter caseDescribedElement(DescribedElement object) {

+				return createDescribedElementAdapter();

+			}

+			@Override

+			public Adapter caseRefactoringUnit(RefactoringUnit object) {

+				return createRefactoringUnitAdapter();

+			}

+			@Override

+			public Adapter caseModelRefactoring(ModelRefactoring object) {

+				return createModelRefactoringAdapter();

+			}

+			@Override

+			public Adapter caseAtomicUnit(AtomicUnit object) {

+				return createAtomicUnitAdapter();

+			}

+			@Override

+			public Adapter caseCompositeUnit(CompositeUnit object) {

+				return createCompositeUnitAdapter();

+			}

+			@Override

+			public Adapter caseSequentialUnit(SequentialUnit object) {

+				return createSequentialUnitAdapter();

+			}

+			@Override

+			public Adapter caseConditionCheck(ConditionCheck object) {

+				return createConditionCheckAdapter();

+			}

+			@Override

+			public Adapter caseConditionalUnit(ConditionalUnit object) {

+				return createConditionalUnitAdapter();

+			}

+			@Override

+			public Adapter caseQueuedUnit(QueuedUnit object) {

+				return createQueuedUnitAdapter();

+			}

+			@Override

+			public Adapter caseSingleQueuedUnit(SingleQueuedUnit object) {

+				return createSingleQueuedUnitAdapter();

+			}

+			@Override

+			public Adapter caseTwicedQueuedUnit(TwicedQueuedUnit object) {

+				return createTwicedQueuedUnitAdapter();

+			}

+			@Override

+			public Adapter caseCartesianQueuedUnit(CartesianQueuedUnit object) {

+				return createCartesianQueuedUnitAdapter();

+			}

+			@Override

+			public Adapter caseParallelQueuedUnit(ParallelQueuedUnit object) {

+				return createParallelQueuedUnitAdapter();

+			}

+			@Override

+			public Adapter caseHelperUnit(HelperUnit object) {

+				return createHelperUnitAdapter();

+			}

+			@Override

+			public Adapter caseFeatureUnit(FeatureUnit object) {

+				return createFeatureUnitAdapter();

+			}

+			@Override

+			public Adapter caseSingleFeatureUnit(SingleFeatureUnit object) {

+				return createSingleFeatureUnitAdapter();

+			}

+			@Override

+			public Adapter caseMultiFeatureUnit(MultiFeatureUnit object) {

+				return createMultiFeatureUnitAdapter();

+			}

+			@Override

+			public Adapter caseFilterUnit(FilterUnit object) {

+				return createFilterUnitAdapter();

+			}

+			@Override

+			public Adapter caseSingleFilterUnit(SingleFilterUnit object) {

+				return createSingleFilterUnitAdapter();

+			}

+			@Override

+			public Adapter caseMultiFilterUnit(MultiFilterUnit object) {

+				return createMultiFilterUnitAdapter();

+			}

+			@Override

+			public Adapter caseHelper(Helper object) {

+				return createHelperAdapter();

+			}

+			@Override

+			public Adapter caseFeatureHelper(FeatureHelper object) {

+				return createFeatureHelperAdapter();

+			}

+			@Override

+			public Adapter caseSingleFeatureHelper(SingleFeatureHelper object) {

+				return createSingleFeatureHelperAdapter();

+			}

+			@Override

+			public Adapter caseMultiFeatureHelper(MultiFeatureHelper object) {

+				return createMultiFeatureHelperAdapter();

+			}

+			@Override

+			public Adapter caseFilterHelper(FilterHelper object) {

+				return createFilterHelperAdapter();

+			}

+			@Override

+			public Adapter caseSingleFilterHelper(SingleFilterHelper object) {

+				return createSingleFilterHelperAdapter();

+			}

+			@Override

+			public Adapter caseMultiFilterHelper(MultiFilterHelper object) {

+				return createMultiFilterHelperAdapter();

+			}

+			@Override

+			public Adapter casePort(Port object) {

+				return createPortAdapter();

+			}

+			@Override

+			public Adapter caseSinglePort(SinglePort object) {

+				return createSinglePortAdapter();

+			}

+			@Override

+			public Adapter caseMultiPort(MultiPort object) {

+				return createMultiPortAdapter();

+			}

+			@Override

+			public Adapter caseInputPort(InputPort object) {

+				return createInputPortAdapter();

+			}

+			@Override

+			public Adapter caseOutputPort(OutputPort object) {

+				return createOutputPortAdapter();

+			}

+			@Override

+			public Adapter caseSingleInputPort(SingleInputPort object) {

+				return createSingleInputPortAdapter();

+			}

+			@Override

+			public Adapter caseMultiInputPort(MultiInputPort object) {

+				return createMultiInputPortAdapter();

+			}

+			@Override

+			public Adapter caseSingleOutputPort(SingleOutputPort object) {

+				return createSingleOutputPortAdapter();

+			}

+			@Override

+			public Adapter caseMultiOutputPort(MultiOutputPort object) {

+				return createMultiOutputPortAdapter();

+			}

+			@Override

+			public Adapter casePortMapping(PortMapping object) {

+				return createPortMappingAdapter();

+			}

+			@Override

+			public Adapter caseSinglePortMapping(SinglePortMapping object) {

+				return createSinglePortMappingAdapter();

+			}

+			@Override

+			public Adapter caseMultiPortMapping(MultiPortMapping object) {

+				return createMultiPortMappingAdapter();

+			}

+			@Override

+			public Adapter caseMultiSinglePortMapping(MultiSinglePortMapping object) {

+				return createMultiSinglePortMappingAdapter();

+			}

+			@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 comrel.CompositeRefactoring <em>Composite Refactoring</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 comrel.CompositeRefactoring

+	 * @generated

+	 */

+	public Adapter createCompositeRefactoringAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.NamedElement <em>Named Element</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 comrel.NamedElement

+	 * @generated

+	 */

+	public Adapter createNamedElementAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.DescribedElement <em>Described Element</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 comrel.DescribedElement

+	 * @generated

+	 */

+	public Adapter createDescribedElementAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.RefactoringUnit <em>Refactoring Unit</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 comrel.RefactoringUnit

+	 * @generated

+	 */

+	public Adapter createRefactoringUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.ModelRefactoring <em>Model Refactoring</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 comrel.ModelRefactoring

+	 * @generated

+	 */

+	public Adapter createModelRefactoringAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.AtomicUnit <em>Atomic Unit</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 comrel.AtomicUnit

+	 * @generated

+	 */

+	public Adapter createAtomicUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.CompositeUnit <em>Composite Unit</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 comrel.CompositeUnit

+	 * @generated

+	 */

+	public Adapter createCompositeUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SequentialUnit <em>Sequential Unit</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 comrel.SequentialUnit

+	 * @generated

+	 */

+	public Adapter createSequentialUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.ConditionCheck <em>Condition Check</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 comrel.ConditionCheck

+	 * @generated

+	 */

+	public Adapter createConditionCheckAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.ConditionalUnit <em>Conditional Unit</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 comrel.ConditionalUnit

+	 * @generated

+	 */

+	public Adapter createConditionalUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.QueuedUnit <em>Queued Unit</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 comrel.QueuedUnit

+	 * @generated

+	 */

+	public Adapter createQueuedUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleQueuedUnit <em>Single Queued Unit</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 comrel.SingleQueuedUnit

+	 * @generated

+	 */

+	public Adapter createSingleQueuedUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.TwicedQueuedUnit <em>Twiced Queued Unit</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 comrel.TwicedQueuedUnit

+	 * @generated

+	 */

+	public Adapter createTwicedQueuedUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.CartesianQueuedUnit <em>Cartesian Queued Unit</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 comrel.CartesianQueuedUnit

+	 * @generated

+	 */

+	public Adapter createCartesianQueuedUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.ParallelQueuedUnit <em>Parallel Queued Unit</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 comrel.ParallelQueuedUnit

+	 * @generated

+	 */

+	public Adapter createParallelQueuedUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.HelperUnit <em>Helper Unit</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 comrel.HelperUnit

+	 * @generated

+	 */

+	public Adapter createHelperUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.FeatureUnit <em>Feature Unit</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 comrel.FeatureUnit

+	 * @generated

+	 */

+	public Adapter createFeatureUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleFeatureUnit <em>Single Feature Unit</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 comrel.SingleFeatureUnit

+	 * @generated

+	 */

+	public Adapter createSingleFeatureUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiFeatureUnit <em>Multi Feature Unit</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 comrel.MultiFeatureUnit

+	 * @generated

+	 */

+	public Adapter createMultiFeatureUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.FilterUnit <em>Filter Unit</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 comrel.FilterUnit

+	 * @generated

+	 */

+	public Adapter createFilterUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleFilterUnit <em>Single Filter Unit</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 comrel.SingleFilterUnit

+	 * @generated

+	 */

+	public Adapter createSingleFilterUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiFilterUnit <em>Multi Filter Unit</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 comrel.MultiFilterUnit

+	 * @generated

+	 */

+	public Adapter createMultiFilterUnitAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.Helper <em>Helper</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 comrel.Helper

+	 * @generated

+	 */

+	public Adapter createHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.FeatureHelper <em>Feature Helper</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 comrel.FeatureHelper

+	 * @generated

+	 */

+	public Adapter createFeatureHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleFeatureHelper <em>Single Feature Helper</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 comrel.SingleFeatureHelper

+	 * @generated

+	 */

+	public Adapter createSingleFeatureHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiFeatureHelper <em>Multi Feature Helper</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 comrel.MultiFeatureHelper

+	 * @generated

+	 */

+	public Adapter createMultiFeatureHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.FilterHelper <em>Filter Helper</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 comrel.FilterHelper

+	 * @generated

+	 */

+	public Adapter createFilterHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleFilterHelper <em>Single Filter Helper</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 comrel.SingleFilterHelper

+	 * @generated

+	 */

+	public Adapter createSingleFilterHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiFilterHelper <em>Multi Filter Helper</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 comrel.MultiFilterHelper

+	 * @generated

+	 */

+	public Adapter createMultiFilterHelperAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.Port <em>Port</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 comrel.Port

+	 * @generated

+	 */

+	public Adapter createPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SinglePort <em>Single Port</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 comrel.SinglePort

+	 * @generated

+	 */

+	public Adapter createSinglePortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiPort <em>Multi Port</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 comrel.MultiPort

+	 * @generated

+	 */

+	public Adapter createMultiPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.InputPort <em>Input Port</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 comrel.InputPort

+	 * @generated

+	 */

+	public Adapter createInputPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.OutputPort <em>Output Port</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 comrel.OutputPort

+	 * @generated

+	 */

+	public Adapter createOutputPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleInputPort <em>Single Input Port</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 comrel.SingleInputPort

+	 * @generated

+	 */

+	public Adapter createSingleInputPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiInputPort <em>Multi Input Port</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 comrel.MultiInputPort

+	 * @generated

+	 */

+	public Adapter createMultiInputPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SingleOutputPort <em>Single Output Port</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 comrel.SingleOutputPort

+	 * @generated

+	 */

+	public Adapter createSingleOutputPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiOutputPort <em>Multi Output Port</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 comrel.MultiOutputPort

+	 * @generated

+	 */

+	public Adapter createMultiOutputPortAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.PortMapping <em>Port Mapping</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 comrel.PortMapping

+	 * @generated

+	 */

+	public Adapter createPortMappingAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.SinglePortMapping <em>Single Port Mapping</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 comrel.SinglePortMapping

+	 * @generated

+	 */

+	public Adapter createSinglePortMappingAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiPortMapping <em>Multi Port Mapping</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 comrel.MultiPortMapping

+	 * @generated

+	 */

+	public Adapter createMultiPortMappingAdapter() {

+		return null;

+	}

+

+	/**

+	 * Creates a new adapter for an object of class '{@link comrel.MultiSinglePortMapping <em>Multi Single Port Mapping</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 comrel.MultiSinglePortMapping

+	 * @generated

+	 */

+	public Adapter createMultiSinglePortMappingAdapter() {

+		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;

+	}

+

+} //ComrelAdapterFactory

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelSwitch.java b/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelSwitch.java
new file mode 100644
index 0000000..1cad47c
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelSwitch.java
@@ -0,0 +1,1115 @@
+/**

+ * <copyright>

+ * </copyright>

+ *

+ * $Id$

+ */

+package comrel.util;

+

+import comrel.*;

+

+import java.util.List;

+

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * <!-- 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 comrel.ComrelPackage

+ * @generated

+ */

+public class ComrelSwitch<T> {

+	/**

+	 * The cached model package

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected static ComrelPackage modelPackage;

+

+	/**

+	 * Creates an instance of the switch.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public ComrelSwitch() {

+		if (modelPackage == null) {

+			modelPackage = ComrelPackage.eINSTANCE;

+		}

+	}

+

+	/**

+	 * 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

+	 */

+	public T doSwitch(EObject theEObject) {

+		return doSwitch(theEObject.eClass(), theEObject);

+	}

+

+	/**

+	 * 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

+	 */

+	protected T doSwitch(EClass theEClass, EObject theEObject) {

+		if (theEClass.eContainer() == modelPackage) {

+			return doSwitch(theEClass.getClassifierID(), theEObject);

+		}

+		else {

+			List<EClass> eSuperTypes = theEClass.getESuperTypes();

+			return

+				eSuperTypes.isEmpty() ?

+					defaultCase(theEObject) :

+					doSwitch(eSuperTypes.get(0), theEObject);

+		}

+	}

+

+	/**

+	 * 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

+	 */

+	protected T doSwitch(int classifierID, EObject theEObject) {

+		switch (classifierID) {

+			case ComrelPackage.COMPOSITE_REFACTORING: {

+				CompositeRefactoring compositeRefactoring = (CompositeRefactoring)theEObject;

+				T result = caseCompositeRefactoring(compositeRefactoring);

+				if (result == null) result = caseModelRefactoring(compositeRefactoring);

+				if (result == null) result = caseNamedElement(compositeRefactoring);

+				if (result == null) result = caseDescribedElement(compositeRefactoring);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.NAMED_ELEMENT: {

+				NamedElement namedElement = (NamedElement)theEObject;

+				T result = caseNamedElement(namedElement);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.DESCRIBED_ELEMENT: {

+				DescribedElement describedElement = (DescribedElement)theEObject;

+				T result = caseDescribedElement(describedElement);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.REFACTORING_UNIT: {

+				RefactoringUnit refactoringUnit = (RefactoringUnit)theEObject;

+				T result = caseRefactoringUnit(refactoringUnit);

+				if (result == null) result = caseNamedElement(refactoringUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MODEL_REFACTORING: {

+				ModelRefactoring modelRefactoring = (ModelRefactoring)theEObject;

+				T result = caseModelRefactoring(modelRefactoring);

+				if (result == null) result = caseNamedElement(modelRefactoring);

+				if (result == null) result = caseDescribedElement(modelRefactoring);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.ATOMIC_UNIT: {

+				AtomicUnit atomicUnit = (AtomicUnit)theEObject;

+				T result = caseAtomicUnit(atomicUnit);

+				if (result == null) result = caseRefactoringUnit(atomicUnit);

+				if (result == null) result = caseNamedElement(atomicUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.COMPOSITE_UNIT: {

+				CompositeUnit compositeUnit = (CompositeUnit)theEObject;

+				T result = caseCompositeUnit(compositeUnit);

+				if (result == null) result = caseRefactoringUnit(compositeUnit);

+				if (result == null) result = caseNamedElement(compositeUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SEQUENTIAL_UNIT: {

+				SequentialUnit sequentialUnit = (SequentialUnit)theEObject;

+				T result = caseSequentialUnit(sequentialUnit);

+				if (result == null) result = caseCompositeUnit(sequentialUnit);

+				if (result == null) result = caseRefactoringUnit(sequentialUnit);

+				if (result == null) result = caseNamedElement(sequentialUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.CONDITION_CHECK: {

+				ConditionCheck conditionCheck = (ConditionCheck)theEObject;

+				T result = caseConditionCheck(conditionCheck);

+				if (result == null) result = caseNamedElement(conditionCheck);

+				if (result == null) result = caseDescribedElement(conditionCheck);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.CONDITIONAL_UNIT: {

+				ConditionalUnit conditionalUnit = (ConditionalUnit)theEObject;

+				T result = caseConditionalUnit(conditionalUnit);

+				if (result == null) result = caseCompositeUnit(conditionalUnit);

+				if (result == null) result = caseRefactoringUnit(conditionalUnit);

+				if (result == null) result = caseNamedElement(conditionalUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.QUEUED_UNIT: {

+				QueuedUnit queuedUnit = (QueuedUnit)theEObject;

+				T result = caseQueuedUnit(queuedUnit);

+				if (result == null) result = caseCompositeUnit(queuedUnit);

+				if (result == null) result = caseRefactoringUnit(queuedUnit);

+				if (result == null) result = caseNamedElement(queuedUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_QUEUED_UNIT: {

+				SingleQueuedUnit singleQueuedUnit = (SingleQueuedUnit)theEObject;

+				T result = caseSingleQueuedUnit(singleQueuedUnit);

+				if (result == null) result = caseQueuedUnit(singleQueuedUnit);

+				if (result == null) result = caseCompositeUnit(singleQueuedUnit);

+				if (result == null) result = caseRefactoringUnit(singleQueuedUnit);

+				if (result == null) result = caseNamedElement(singleQueuedUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.TWICED_QUEUED_UNIT: {

+				TwicedQueuedUnit twicedQueuedUnit = (TwicedQueuedUnit)theEObject;

+				T result = caseTwicedQueuedUnit(twicedQueuedUnit);

+				if (result == null) result = caseQueuedUnit(twicedQueuedUnit);

+				if (result == null) result = caseCompositeUnit(twicedQueuedUnit);

+				if (result == null) result = caseRefactoringUnit(twicedQueuedUnit);

+				if (result == null) result = caseNamedElement(twicedQueuedUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.CARTESIAN_QUEUED_UNIT: {

+				CartesianQueuedUnit cartesianQueuedUnit = (CartesianQueuedUnit)theEObject;

+				T result = caseCartesianQueuedUnit(cartesianQueuedUnit);

+				if (result == null) result = caseTwicedQueuedUnit(cartesianQueuedUnit);

+				if (result == null) result = caseQueuedUnit(cartesianQueuedUnit);

+				if (result == null) result = caseCompositeUnit(cartesianQueuedUnit);

+				if (result == null) result = caseRefactoringUnit(cartesianQueuedUnit);

+				if (result == null) result = caseNamedElement(cartesianQueuedUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.PARALLEL_QUEUED_UNIT: {

+				ParallelQueuedUnit parallelQueuedUnit = (ParallelQueuedUnit)theEObject;

+				T result = caseParallelQueuedUnit(parallelQueuedUnit);

+				if (result == null) result = caseTwicedQueuedUnit(parallelQueuedUnit);

+				if (result == null) result = caseQueuedUnit(parallelQueuedUnit);

+				if (result == null) result = caseCompositeUnit(parallelQueuedUnit);

+				if (result == null) result = caseRefactoringUnit(parallelQueuedUnit);

+				if (result == null) result = caseNamedElement(parallelQueuedUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.HELPER_UNIT: {

+				HelperUnit helperUnit = (HelperUnit)theEObject;

+				T result = caseHelperUnit(helperUnit);

+				if (result == null) result = caseNamedElement(helperUnit);

+				if (result == null) result = caseDescribedElement(helperUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.FEATURE_UNIT: {

+				FeatureUnit featureUnit = (FeatureUnit)theEObject;

+				T result = caseFeatureUnit(featureUnit);

+				if (result == null) result = caseHelperUnit(featureUnit);

+				if (result == null) result = caseNamedElement(featureUnit);

+				if (result == null) result = caseDescribedElement(featureUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_FEATURE_UNIT: {

+				SingleFeatureUnit singleFeatureUnit = (SingleFeatureUnit)theEObject;

+				T result = caseSingleFeatureUnit(singleFeatureUnit);

+				if (result == null) result = caseFeatureUnit(singleFeatureUnit);

+				if (result == null) result = caseHelperUnit(singleFeatureUnit);

+				if (result == null) result = caseNamedElement(singleFeatureUnit);

+				if (result == null) result = caseDescribedElement(singleFeatureUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_FEATURE_UNIT: {

+				MultiFeatureUnit multiFeatureUnit = (MultiFeatureUnit)theEObject;

+				T result = caseMultiFeatureUnit(multiFeatureUnit);

+				if (result == null) result = caseFeatureUnit(multiFeatureUnit);

+				if (result == null) result = caseHelperUnit(multiFeatureUnit);

+				if (result == null) result = caseNamedElement(multiFeatureUnit);

+				if (result == null) result = caseDescribedElement(multiFeatureUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.FILTER_UNIT: {

+				FilterUnit filterUnit = (FilterUnit)theEObject;

+				T result = caseFilterUnit(filterUnit);

+				if (result == null) result = caseHelperUnit(filterUnit);

+				if (result == null) result = caseNamedElement(filterUnit);

+				if (result == null) result = caseDescribedElement(filterUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_FILTER_UNIT: {

+				SingleFilterUnit singleFilterUnit = (SingleFilterUnit)theEObject;

+				T result = caseSingleFilterUnit(singleFilterUnit);

+				if (result == null) result = caseFilterUnit(singleFilterUnit);

+				if (result == null) result = caseHelperUnit(singleFilterUnit);

+				if (result == null) result = caseNamedElement(singleFilterUnit);

+				if (result == null) result = caseDescribedElement(singleFilterUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_FILTER_UNIT: {

+				MultiFilterUnit multiFilterUnit = (MultiFilterUnit)theEObject;

+				T result = caseMultiFilterUnit(multiFilterUnit);

+				if (result == null) result = caseFilterUnit(multiFilterUnit);

+				if (result == null) result = caseHelperUnit(multiFilterUnit);

+				if (result == null) result = caseNamedElement(multiFilterUnit);

+				if (result == null) result = caseDescribedElement(multiFilterUnit);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.HELPER: {

+				Helper helper = (Helper)theEObject;

+				T result = caseHelper(helper);

+				if (result == null) result = caseNamedElement(helper);

+				if (result == null) result = caseDescribedElement(helper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.FEATURE_HELPER: {

+				FeatureHelper featureHelper = (FeatureHelper)theEObject;

+				T result = caseFeatureHelper(featureHelper);

+				if (result == null) result = caseHelper(featureHelper);

+				if (result == null) result = caseNamedElement(featureHelper);

+				if (result == null) result = caseDescribedElement(featureHelper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_FEATURE_HELPER: {

+				SingleFeatureHelper singleFeatureHelper = (SingleFeatureHelper)theEObject;

+				T result = caseSingleFeatureHelper(singleFeatureHelper);

+				if (result == null) result = caseFeatureHelper(singleFeatureHelper);

+				if (result == null) result = caseHelper(singleFeatureHelper);

+				if (result == null) result = caseNamedElement(singleFeatureHelper);

+				if (result == null) result = caseDescribedElement(singleFeatureHelper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_FEATURE_HELPER: {

+				MultiFeatureHelper multiFeatureHelper = (MultiFeatureHelper)theEObject;

+				T result = caseMultiFeatureHelper(multiFeatureHelper);

+				if (result == null) result = caseFeatureHelper(multiFeatureHelper);

+				if (result == null) result = caseHelper(multiFeatureHelper);

+				if (result == null) result = caseNamedElement(multiFeatureHelper);

+				if (result == null) result = caseDescribedElement(multiFeatureHelper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.FILTER_HELPER: {

+				FilterHelper filterHelper = (FilterHelper)theEObject;

+				T result = caseFilterHelper(filterHelper);

+				if (result == null) result = caseHelper(filterHelper);

+				if (result == null) result = caseNamedElement(filterHelper);

+				if (result == null) result = caseDescribedElement(filterHelper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_FILTER_HELPER: {

+				SingleFilterHelper singleFilterHelper = (SingleFilterHelper)theEObject;

+				T result = caseSingleFilterHelper(singleFilterHelper);

+				if (result == null) result = caseFilterHelper(singleFilterHelper);

+				if (result == null) result = caseHelper(singleFilterHelper);

+				if (result == null) result = caseNamedElement(singleFilterHelper);

+				if (result == null) result = caseDescribedElement(singleFilterHelper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_FILTER_HELPER: {

+				MultiFilterHelper multiFilterHelper = (MultiFilterHelper)theEObject;

+				T result = caseMultiFilterHelper(multiFilterHelper);

+				if (result == null) result = caseFilterHelper(multiFilterHelper);

+				if (result == null) result = caseHelper(multiFilterHelper);

+				if (result == null) result = caseNamedElement(multiFilterHelper);

+				if (result == null) result = caseDescribedElement(multiFilterHelper);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.PORT: {

+				Port port = (Port)theEObject;

+				T result = casePort(port);

+				if (result == null) result = caseNamedElement(port);

+				if (result == null) result = caseDescribedElement(port);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_PORT: {

+				SinglePort singlePort = (SinglePort)theEObject;

+				T result = caseSinglePort(singlePort);

+				if (result == null) result = casePort(singlePort);

+				if (result == null) result = caseNamedElement(singlePort);

+				if (result == null) result = caseDescribedElement(singlePort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_PORT: {

+				MultiPort multiPort = (MultiPort)theEObject;

+				T result = caseMultiPort(multiPort);

+				if (result == null) result = casePort(multiPort);

+				if (result == null) result = caseNamedElement(multiPort);

+				if (result == null) result = caseDescribedElement(multiPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.INPUT_PORT: {

+				InputPort inputPort = (InputPort)theEObject;

+				T result = caseInputPort(inputPort);

+				if (result == null) result = casePort(inputPort);

+				if (result == null) result = caseNamedElement(inputPort);

+				if (result == null) result = caseDescribedElement(inputPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.OUTPUT_PORT: {

+				OutputPort outputPort = (OutputPort)theEObject;

+				T result = caseOutputPort(outputPort);

+				if (result == null) result = casePort(outputPort);

+				if (result == null) result = caseNamedElement(outputPort);

+				if (result == null) result = caseDescribedElement(outputPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_INPUT_PORT: {

+				SingleInputPort singleInputPort = (SingleInputPort)theEObject;

+				T result = caseSingleInputPort(singleInputPort);

+				if (result == null) result = caseSinglePort(singleInputPort);

+				if (result == null) result = caseInputPort(singleInputPort);

+				if (result == null) result = casePort(singleInputPort);

+				if (result == null) result = caseNamedElement(singleInputPort);

+				if (result == null) result = caseDescribedElement(singleInputPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_INPUT_PORT: {

+				MultiInputPort multiInputPort = (MultiInputPort)theEObject;

+				T result = caseMultiInputPort(multiInputPort);

+				if (result == null) result = caseMultiPort(multiInputPort);

+				if (result == null) result = caseInputPort(multiInputPort);

+				if (result == null) result = casePort(multiInputPort);

+				if (result == null) result = caseNamedElement(multiInputPort);

+				if (result == null) result = caseDescribedElement(multiInputPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_OUTPUT_PORT: {

+				SingleOutputPort singleOutputPort = (SingleOutputPort)theEObject;

+				T result = caseSingleOutputPort(singleOutputPort);

+				if (result == null) result = caseSinglePort(singleOutputPort);

+				if (result == null) result = caseOutputPort(singleOutputPort);

+				if (result == null) result = casePort(singleOutputPort);

+				if (result == null) result = caseNamedElement(singleOutputPort);

+				if (result == null) result = caseDescribedElement(singleOutputPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_OUTPUT_PORT: {

+				MultiOutputPort multiOutputPort = (MultiOutputPort)theEObject;

+				T result = caseMultiOutputPort(multiOutputPort);

+				if (result == null) result = caseMultiPort(multiOutputPort);

+				if (result == null) result = caseOutputPort(multiOutputPort);

+				if (result == null) result = casePort(multiOutputPort);

+				if (result == null) result = caseNamedElement(multiOutputPort);

+				if (result == null) result = caseDescribedElement(multiOutputPort);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.PORT_MAPPING: {

+				PortMapping portMapping = (PortMapping)theEObject;

+				T result = casePortMapping(portMapping);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.SINGLE_PORT_MAPPING: {

+				SinglePortMapping singlePortMapping = (SinglePortMapping)theEObject;

+				T result = caseSinglePortMapping(singlePortMapping);

+				if (result == null) result = casePortMapping(singlePortMapping);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_PORT_MAPPING: {

+				MultiPortMapping multiPortMapping = (MultiPortMapping)theEObject;

+				T result = caseMultiPortMapping(multiPortMapping);

+				if (result == null) result = casePortMapping(multiPortMapping);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			case ComrelPackage.MULTI_SINGLE_PORT_MAPPING: {

+				MultiSinglePortMapping multiSinglePortMapping = (MultiSinglePortMapping)theEObject;

+				T result = caseMultiSinglePortMapping(multiSinglePortMapping);

+				if (result == null) result = casePortMapping(multiSinglePortMapping);

+				if (result == null) result = defaultCase(theEObject);

+				return result;

+			}

+			default: return defaultCase(theEObject);

+		}

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Composite Refactoring</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>Composite Refactoring</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseCompositeRefactoring(CompositeRefactoring object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</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>Named Element</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseNamedElement(NamedElement object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Described Element</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>Described Element</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseDescribedElement(DescribedElement object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Refactoring Unit</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>Refactoring Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseRefactoringUnit(RefactoringUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Model Refactoring</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>Model Refactoring</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseModelRefactoring(ModelRefactoring object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Atomic Unit</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>Atomic Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseAtomicUnit(AtomicUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Composite Unit</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>Composite Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseCompositeUnit(CompositeUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Sequential Unit</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>Sequential Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSequentialUnit(SequentialUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Condition Check</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>Condition Check</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseConditionCheck(ConditionCheck object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Conditional Unit</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>Conditional Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseConditionalUnit(ConditionalUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Queued Unit</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>Queued Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseQueuedUnit(QueuedUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Queued Unit</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>Single Queued Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleQueuedUnit(SingleQueuedUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Twiced Queued Unit</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>Twiced Queued Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseTwicedQueuedUnit(TwicedQueuedUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Cartesian Queued Unit</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>Cartesian Queued Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseCartesianQueuedUnit(CartesianQueuedUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Parallel Queued Unit</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>Parallel Queued Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseParallelQueuedUnit(ParallelQueuedUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Helper Unit</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>Helper Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseHelperUnit(HelperUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Feature Unit</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>Feature Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseFeatureUnit(FeatureUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Feature Unit</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>Single Feature Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleFeatureUnit(SingleFeatureUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Feature Unit</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>Multi Feature Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiFeatureUnit(MultiFeatureUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Filter Unit</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>Filter Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseFilterUnit(FilterUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Filter Unit</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>Single Filter Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleFilterUnit(SingleFilterUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Filter Unit</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>Multi Filter Unit</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiFilterUnit(MultiFilterUnit object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Helper</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>Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseHelper(Helper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Feature Helper</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>Feature Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseFeatureHelper(FeatureHelper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Feature Helper</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>Single Feature Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleFeatureHelper(SingleFeatureHelper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Feature Helper</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>Multi Feature Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiFeatureHelper(MultiFeatureHelper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Filter Helper</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>Filter Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseFilterHelper(FilterHelper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Filter Helper</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>Single Filter Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleFilterHelper(SingleFilterHelper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Filter Helper</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>Multi Filter Helper</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiFilterHelper(MultiFilterHelper object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Port</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>Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T casePort(Port object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Port</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>Single Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSinglePort(SinglePort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Port</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>Multi Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiPort(MultiPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Input Port</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>Input Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseInputPort(InputPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Output Port</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>Output Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseOutputPort(OutputPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Input Port</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>Single Input Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleInputPort(SingleInputPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Input Port</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>Multi Input Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiInputPort(MultiInputPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Output Port</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>Single Output Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSingleOutputPort(SingleOutputPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Output Port</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>Multi Output Port</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiOutputPort(MultiOutputPort object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Port Mapping</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>Port Mapping</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T casePortMapping(PortMapping object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Single Port Mapping</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>Single Port Mapping</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseSinglePortMapping(SinglePortMapping object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Port Mapping</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>Multi Port Mapping</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiPortMapping(MultiPortMapping object) {

+		return null;

+	}

+

+	/**

+	 * Returns the result of interpreting the object as an instance of '<em>Multi Single Port Mapping</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>Multi Single Port Mapping</em>'.

+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)

+	 * @generated

+	 */

+	public T caseMultiSinglePortMapping(MultiSinglePortMapping 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

+	 */

+	public T defaultCase(EObject object) {

+		return null;

+	}

+

+} //ComrelSwitch

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelUtil.java b/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelUtil.java
new file mode 100644
index 0000000..d44af94
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/util/ComrelUtil.java
@@ -0,0 +1,208 @@
+package comrel.util;

+

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Comparator;

+import java.util.List;

+

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.swt.graphics.Color;

+

+import comrel.AtomicUnit;

+import comrel.CompositeRefactoring;

+import comrel.FeatureHelper;

+import comrel.FeatureUnit;

+import comrel.FilterHelper;

+import comrel.FilterUnit;

+import comrel.Helper;

+import comrel.HelperUnit;

+import comrel.ModelRefactoring;

+import comrel.OutputPort;

+import comrel.Port;

+import comrel.SingleInputPort;

+

+public class ComrelUtil {

+

+	

+	/**

+	 * Überprüft, ob ein Port änderbar ist oder nicht

+	 * @param p Port, der überprüft werden soll

+	 * @return

+	 */

+	public static boolean portIsSettable(Port p) {

+		EObject container = p.eContainer();

+		if (container != null) {

+			if (container instanceof AtomicUnit) {

+				return false;

+			}

+			if (container instanceof ModelRefactoring) {

+				return false;

+			}

+			if (container instanceof FilterHelper) {

+				return false;

+			}

+			if (container instanceof FilterUnit) {

+				return false;

+			}

+			if (container instanceof FeatureHelper && (p instanceof SingleInputPort || p instanceof OutputPort)) {

+				return false;

+			}

+			if (container instanceof FeatureUnit && (p instanceof SingleInputPort || p instanceof OutputPort)) {

+				return false;

+			}

+		}

+		return true;

+	}

+

+	/**

+	 * Überprüft, ob ein Object änderbar ist oder nicht

+	 * @param p Object, das überprüft werden soll

+	 * @return

+	 */

+	public static boolean objectIsSettable(EObject e) {

+		if (e.eContainer() != null) {

+			if (e instanceof AtomicUnit) {

+				return false;

+			}

+			if (e instanceof ModelRefactoring) {

+				return false;

+			}

+			if (e instanceof HelperUnit) {

+				return false;

+			}

+			if (e instanceof Helper) {

+				return false;

+			}

+			if (e instanceof Port) {

+				return portIsSettable((Port) e);

+			}

+		}

+		return true;

+	}

+

+	

+	/**

+	 * Konvertiert einen String in den Plural (BETA)

+	 * @param singlePortName

+	 * @return

+	 */

+	public static String convertSingularToPluralPortName(String singlePortName) {

+		String result = "";

+		char[] cases = singlePortName.toCharArray();

+		if(cases.length==0) {

+			return "";

+		}

+		for (int i = 0; i < cases.length - 1; i++) {

+			result += cases[i];

+		}

+		if (singlePortName.endsWith("y")) {

+			result += "ie";

+		} else {

+			if (singlePortName.endsWith("s")) {

+				result += "se";

+			} else {

+				result += cases[cases.length - 1];

+			}

+		}

+		result += "s";

+		return result;

+	}

+

+	/**

+	 * Convertiert einen String in den Singular (BETA)

+	 * @param multiPortName

+	 * @return

+	 */

+	public static String convertPluralToSingularPortName(String multiPortName) {

+		String result = "";

+		char[] cases = multiPortName.toCharArray();

+		if (multiPortName.endsWith("ies")) {

+			for (int i = 0; i < cases.length - 3; i++) {

+				result += cases[i];

+			}

+			result += "y";

+		}

+		if (multiPortName.endsWith("ses")) {

+			for (int i = 0; i < cases.length - 2; i++) {

+				result += cases[i];

+			}

+		}

+		if (result.length() == 0) {

+			for (int i = 0; i < cases.length - 1; i++) {

+				result += cases[i];

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Liefert die Farbe zum entsprechenden Index

+	 * @param i

+	 * @return

+	 */

+	public static Color getColor(int i) {

+		int number = Math.abs(i) % 50;

+

+		return Colors.getColors(50).get(number);

+	}

+

+	

+	/**

+	 * Liefert zu einem EObject das contained CompositeRefactoring

+	 * @param eobject das Object

+	 * @return das CompositeRefactoring

+	 */

+	public static CompositeRefactoring getContainedCompositeRefactoring(EObject eobject) {

+		if(eobject == null) {

+			return null;

+		}

+		EObject container = eobject;

+		while (container.eContainer() != null) {

+			container = container.eContainer();

+		}

+		if (container instanceof CompositeRefactoring) {

+			return (CompositeRefactoring) container;

+		}

+		return null;

+	}

+

+

+	/**

+	 * Sortiert alle ModelRefactorings nach Name

+	 * @param atomics

+	 * @return

+	 */

+	public static Collection<ModelRefactoring> sortAtomicRefactorings(Collection<ModelRefactoring> atomics){

+		Comparator<ModelRefactoring> comp = new ModelRefactoringComparator();

+		List<ModelRefactoring> result = new ArrayList<ModelRefactoring>();

+		result.addAll(atomics);

+		Collections.sort(result, comp);

+		return result;

+	}

+	

+	/**

+	 * Der Comparator zum sortieren der ModelRefactorings

+	 * @author Gerrit

+	 *

+	 */

+	public static class ModelRefactoringComparator implements Comparator<ModelRefactoring>{

+		@Override

+		public int compare(ModelRefactoring arg0, ModelRefactoring arg1) {

+			int result = 0;

+			result = arg0.getName().compareTo(arg1.getName()); 

+			if(result == 0) {

+				result = arg0.getRefId().compareTo(arg1.getRefId());

+			}

+			if(result == 0) {

+				result = arg0.getLabel().compareTo(arg1.getLabel());

+			}

+			if(result == 0) {

+				result = arg0.getNamespaceUri().compareTo(arg1.getNamespaceUri());

+			}

+			return result;

+		}

+		

+	}

+	

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/util/ExtensionPointInfo.java b/org.eclipse.emf.refactor.comrel/src/comrel/util/ExtensionPointInfo.java
new file mode 100644
index 0000000..4a8f297
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/util/ExtensionPointInfo.java
@@ -0,0 +1,20 @@
+package comrel.util;

+

+public class ExtensionPointInfo {

+	

+//	public static final String SINGLEFILTER_EXTENSION_POINT = "org.eclipse.emf.refactor.singlefilter";

+//	public static final String MULTIFILTER_EXTENSION_POINT = "org.eclipse.emf.refactor.multifilter";

+//	public static final String SINGLEFEATURE_EXTENSION_POINT = "org.eclipse.emf.refactor.singlefeature";

+//	public static final String MULTIFEATURE_EXTENSION_POINT = "org.eclipse.emf.refactor.multifeature";

+	

+	public static final String SINGLEFILTER_EXTENSION_POINT = "comrel.singlefilter";

+	public static final String MULTIFILTER_EXTENSION_POINT = "comrel.multifilter";

+	public static final String SINGLEFEATURE_EXTENSION_POINT = "comrel.singlefeature";

+	public static final String MULTIFEATURE_EXTENSION_POINT = "comrel.multifeature";

+

+	public static final String SINGLEFEATURE = "singlefeature";

+	public static final String MULTIFEATURE = "multifeature";

+	public static final String SINGLEFILTER = "singlefilter";

+	public static final String MULTIFILTER = "multifilter";

+

+}

diff --git a/org.eclipse.emf.refactor.comrel/src/comrel/util/RegistryUtil.java b/org.eclipse.emf.refactor.comrel/src/comrel/util/RegistryUtil.java
new file mode 100644
index 0000000..33f1960
--- /dev/null
+++ b/org.eclipse.emf.refactor.comrel/src/comrel/util/RegistryUtil.java
@@ -0,0 +1,463 @@
+package comrel.util;

+

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.HashSet;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+import java.util.TreeSet;

+

+import org.eclipse.core.runtime.IConfigurationElement;

+import org.eclipse.core.runtime.Platform;

+import org.eclipse.emf.refactor.refactoring.core.Refactoring;

+import org.eclipse.emf.refactor.refactoring.managers.RefactoringManager;

+

+import comrel.ComrelFactory;

+import comrel.Helper;

+import comrel.ModelRefactoring;

+import comrel.MultiFeatureHelper;

+import comrel.MultiFilterHelper;

+import comrel.MultiInputPort;

+import comrel.MultiOutputPort;

+import comrel.Port;

+import comrel.SingleFeatureHelper;

+import comrel.SingleFilterHelper;

+import comrel.SingleInputPort;

+import comrel.SingleOutputPort;

+import comrel.extensions.IMultiFeatureHelper;

+import comrel.extensions.IMultiFilterHelper;

+import comrel.extensions.ISingleFeatureHelper;

+import comrel.extensions.ISingleFilterHelper;

+

+public class RegistryUtil {

+//	private static final String SINGLEFILTER_EXTENSION_POINT = "org.eclipse.emf.refactor.singlefilter";

+//	private static final String MULTIFILTER_EXTENSION_POINT = "org.eclipse.emf.refactor.multifilter";

+//	private static final String SINGLEFEATURE_EXTENSION_POINT = "org.eclipse.emf.refactor.singlefeature";

+//	private static final String MULTIFEATURE_EXTENSION_POINT = "org.eclipse.emf.refactor.multifeature";

+//

+//	private static final String SINGLEFEATURE_SEARCH_STRING = "singlefeature";

+//	private static final String MULTIFEATURE_SEARCH_STRING = "multifeature";

+//	private static final String SINGLEFILTER_SEARCH_STRING = "singlefilter";

+//	private static final String MULTIFILTER_SEARCH_STRING = "multifilter";

+

+	/**

+	 * lädt die Helper, gefiltert nach der namespaceUri

+	 * 

+	 * @param namespaceURI

+	 *            nach der gefiltert werden soll

+	 * @return Set der gefilterten Helper

+	 */

+	public static Set<SingleFilterHelper> loadSingleFilterHelper(

+			String namespaceURI) {

+		Set<SingleFilterHelper> result = new HashSet<SingleFilterHelper>();

+		for (SingleFilterHelper h : loadSingleFilterHelper()) {

+			if (h.getNamespaceUri().equals(namespaceURI)) {

+				result.add(h);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * lädt die Helper

+	 * 

+	 * @return Set der Helper

+	 */

+	public static Set<SingleFilterHelper> loadSingleFilterHelper() {

+		return castSet(loadHelper(ExtensionPointInfo.SINGLEFILTER_EXTENSION_POINT));

+	}

+

+	/**

+	 * lädt die Helper, gefiltert nach der namespaceUri

+	 * 

+	 * @param namespaceURI

+	 *            nach der gefiltert werden soll

+	 * @return Set der gefilterten Helper

+	 */

+	public static Set<MultiFilterHelper> loadMultiFilterHelper(

+			String namespaceURI) {

+		Set<MultiFilterHelper> result = new HashSet<MultiFilterHelper>();

+		for (MultiFilterHelper h : loadMultiFilterHelper()) {

+			if (h.getNamespaceUri().equals(namespaceURI)) {

+				result.add(h);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * lädt die Helper

+	 * 

+	 * @return Set der Helper

+	 */

+	public static Set<MultiFilterHelper> loadMultiFilterHelper() {

+		return castSet(loadHelper(ExtensionPointInfo.MULTIFILTER_EXTENSION_POINT));

+	}

+

+	/**

+	 * lädt die Helper, gefiltert nach der namespaceUri

+	 * 

+	 * @param namespaceURI

+	 *            nach der gefiltert werden soll

+	 * @return Set der gefilterten Helper

+	 */

+	public static Set<SingleFeatureHelper> loadSingleFeatureHelper(

+			String namespaceURI) {

+		Set<SingleFeatureHelper> result = new HashSet<SingleFeatureHelper>();

+		for (SingleFeatureHelper h : loadSingleFeatureHelper()) {

+			if (h.getNamespaceUri().equals(namespaceURI)) {

+				result.add(h);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * lädt die Helper

+	 * 

+	 * @return Set der Helper

+	 */

+	public static Set<SingleFeatureHelper> loadSingleFeatureHelper() {

+		return castSet(loadHelper(ExtensionPointInfo.SINGLEFEATURE_EXTENSION_POINT));

+	}

+

+	/**

+	 * lädt die Helper, gefiltert nach der namespaceUri

+	 * 

+	 * @param namespaceURI

+	 *            nach der gefiltert werden soll

+	 * @return Set der gefilterten Helper

+	 */

+	public static Set<MultiFeatureHelper> loadMultiFeatureHelper(

+			String namespaceURI) {

+		Set<MultiFeatureHelper> result = new HashSet<MultiFeatureHelper>();

+		for (MultiFeatureHelper h : loadMultiFeatureHelper()) {

+			if (h.getNamespaceUri().equals(namespaceURI)) {

+				result.add(h);

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * lädt die Helper

+	 * 

+	 * @return Set der Helper

+	 */

+	public static Set<MultiFeatureHelper> loadMultiFeatureHelper() {

+		return castSet(loadHelper(ExtensionPointInfo.MULTIFEATURE_EXTENSION_POINT));

+	}

+

+	/**

+	 * Lädt anhand des Extension Points die entsprechenden Helper

+	 * 

+	 * @param extensionPoint

+	 *            zu durchszuchender Extension Point

+	 * @return Helper

+	 */

+	private static Set<Helper> loadHelper(String extensionPoint) {

+		Set<Helper> result = new HashSet<Helper>();

+		IConfigurationElement[] helper = Platform.getExtensionRegistry()

+				.getConfigurationElementsFor(extensionPoint);

+		for (IConfigurationElement e : helper) {

+			try {

+

+				Helper h = createHelper(e);

+				if (null != h)

+					result.add(h);

+

+			} catch (Exception e2) {

+				e2.printStackTrace();

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Erstellt anhand des e-Elementes den entsprechenden Helper

+	 * 

+	 * @param e

+	 *            IConfigurableElement

+	 * @return Helper

+	 */

+	private static Helper createHelper(IConfigurationElement e) {

+		if (e.getName().equals(ExtensionPointInfo.SINGLEFEATURE)) {

+			return createSingleFeatureHelper(e);

+		}

+		if (e.getName().equals(ExtensionPointInfo.MULTIFEATURE)) {

+			return createMultiFeatureHelper(e);

+		}

+		if (e.getName().equals(ExtensionPointInfo.SINGLEFILTER)) {

+			return createSingleFilterHelper(e);

+		}

+		if (e.getName().equals(ExtensionPointInfo.MULTIFILTER)) {

+			return createMultiFilterHelper(e);

+		}

+		return null;

+	}

+

+	/**

+	 * Casted ein Set

+	 * 

+	 * @param <E>

+	 * @param set

+	 * @return

+	 */

+	@SuppressWarnings({ "unchecked", "rawtypes" })

+	private static <E> Set<E> castSet(Set set) {

+		Set<E> result = new HashSet<E>();

+		for (Object o : set) {

+			try {

+				result.add((E) o);

+			} catch (Exception e) {

+			}

+		}

+		return result;

+	}

+

+	/**

+	 * Erstellt einen Helper

+	 * 

+	 * @param e

+	 *            IConfigurableElement

+	 * @return Helper

+	 */

+	private static SingleFilterHelper createSingleFilterHelper(

+			IConfigurationElement e) {

+		SingleFilterHelper helper = null;

+		try {

+			ComrelFactory factory = ComrelFactory.eINSTANCE;

+			ISingleFilterHelper i = (ISingleFilterHelper) e

+					.createExecutableExtension("class");

+

+			// Helper und Port erstellen

+			MultiInputPort inPort = factory.createMultiInputPort();

+			SingleOutputPort outPort = factory.createSingleOutputPort();

+			helper = factory.createSingleFilterHelper();

+

+			// Helper und Ports configurieren

+			helper = configureHelperUnit(helper, e);

+			inPort = configurePort(inPort, i.getInputPort());

+			outPort = configurePort(outPort, i.getOutputPort());

+			helper.setInputPort(inPort);

+			helper.setOutputPort(outPort);

+

+			return helper;

+		} catch (Exception ex) {

+			ex.printStackTrace();

+

+		}

+		return null;

+	}

+

+	/**

+	 * Erstellt einen Helper

+	 * 

+	 * @param e

+	 *            IConfigurableElement

+	 * @return Helper

+	 */

+	private static MultiFilterHelper createMultiFilterHelper(

+			IConfigurationElement e) {

+		MultiFilterHelper helper = null;

+		try {

+			ComrelFactory factory = ComrelFactory.eINSTANCE;

+			IMultiFilterHelper i = (IMultiFilterHelper) e

+					.createExecutableExtension("class");

+

+			// Helper und Port erstellen

+			MultiInputPort inPort = factory.createMultiInputPort();

+			MultiOutputPort outPort = factory.createMultiOutputPort();

+			helper = factory.createMultiFilterHelper();

+

+			// Helper und Ports configurieren

+			helper = configureHelperUnit(helper, e);

+			inPort = configurePort(inPort, i.getInputPort());

+			outPort = configurePort(outPort, i.getOutputPort());

+			helper.setInputPort(inPort);

+			helper.setOutputPort(outPort);

+

+			return helper;

+		} catch (Exception ex) {

+			ex.printStackTrace();

+

+		}

+		return null;

+	}

+

+	/**

+	 * Erstellt einen Helper

+	 * 

+	 * @param e

+	 *            IConfigurableElement

+	 * @return Helper

+	 */

+	private static SingleFeatureHelper createSingleFeatureHelper(

+			IConfigurationElement e) {

+		SingleFeatureHelper helper = null;

+		try {

+			ComrelFactory factory = ComrelFactory.eINSTANCE;

+			ISingleFeatureHelper i = (ISingleFeatureHelper) e

+					.createExecutableExtension("class");

+

+			// Helper und Port erstellen

+			SingleInputPort inPort = factory.createSingleInputPort();

+			SingleOutputPort outPort = factory.createSingleOutputPort();

+			helper = factory.createSingleFeatureHelper();

+

+			// Helper und Ports configurieren

+			helper = configureHelperUnit(helper, e);

+			inPort = configurePort(inPort, i.getInputPort());

+			outPort = configurePort(outPort, i.getOutputPort());

+			helper.setInputPort(inPort);

+			helper.setOutputPort(outPort);

+

+			return helper;

+		} catch (Exception ex) {

+			ex.printStackTrace();

+

+		}

+		return null;

+	}

+

+	/**

+	 * Erstellt einen Helper

+	 * 

+	 * @param e

+	 *            IConfigurableElement

+	 * @return Helper

+	 */

+	private static MultiFeatureHelper createMultiFeatureHelper(

+			IConfigurationElement e) {

+		MultiFeatureHelper helper = null;

+		try {

+			ComrelFactory factory = ComrelFactory.eINSTANCE;

+			IMultiFeatureHelper i = (IMultiFeatureHelper) e

+					.createExecutableExtension("class");

+

+			// Helper und Port erstellen

+			SingleInputPort inPort = factory.createSingleInputPort();

+			MultiOutputPort outPort = factory.createMultiOutputPort();

+			helper = factory.createMultiFeatureHelper();

+

+			// Helper und Ports configurieren

+			helper = configureHelperUnit(helper, e);

+			inPort = configurePort(inPort, i.getInputPort());

+			outPort = configurePort(outPort, i.getOutputPort());

+			helper.setInputPort(inPort);

+			helper.setOutputPort(outPort);

+

+			return helper;

+		} catch (Exception ex) {

+			ex.printStackTrace();

+

+		}

+		return null;

+	}

+

+	/**

+	 * Konfiguriert einen Helper

+	 * 

+	 * @param <H>

+	 * @param helper

+	 * @param e

+	 * @return

+	 */

+	private static <H extends Helper> H configureHelperUnit(H helper,

+			IConfigurationElement e) {

+		String id = e.getAttribute("id");

+		String name = e.getAttribute("name");

+		String namespaceUri = e.getAttribute("namespaceUri");

+		helper.setHelperId(id);

+		helper.setName(name);

+		helper.setNamespaceUri(namespaceUri);

+		return helper;

+	}

+

+	/**

+	 * Konfiguriert einen Port

+	 * 

+	 * @param <P>

+	 * @param configurablePort

+	 *            der zu konfigurierende Port

+	 * @param originalPort

+	 *            der originalPort

+	 * @return configurierter Port

+	 */

+	@SuppressWarnings("rawtypes")

+	private static <P extends Port> P configurePort(P configurablePort,

+			Port originalPort) {

+		String name = originalPort.getName();

+		Class type = originalPort.getType();

+		String description = originalPort.getDescription();

+		configurablePort.setName(name);

+		configurablePort.setType(type);

+		configurablePort.setDescription(description);

+		return configurablePort;

+	}

+

+	/**

+	 * Liefert alle EmfRefactorings

+	 * @return

+	 */

+	public static Collection<ModelRefactoring> getEmfRefactoringsAsModelRefactorings() {

+		return getEmfRefactoringsAsModelRefactorings("");

+	}

+

+	/**

+	 * Liefert alle ModelRefactorings useses EmfRefactor-ExtensionPoint

+	 */

+	@SuppressWarnings("rawtypes")

+	public static Collection<ModelRefactoring> getEmfRefactoringsAsModelRefactorings(

+			String namespaceURI) {

+		ComrelFactory comrelFactory = ComrelFactory.eINSTANCE;

+//			(ComrelFactory) EPackage.Registry.INSTANCE

+//				.getEFactory("comrel");

+		List<Refactoring> refactorings = RefactoringManager.getAllRefactorings();

+		Map<String, ModelRefactoring> atomics = new HashMap<String, ModelRefactoring>();

+		ModelRefactoring atomic;

+		Set<org.eclipse.emf.refactor.refactoring.core.Port> ports;

+		SingleInputPort inputPort;

+		if (namespaceURI == null) {

+			namespaceURI = "";

+		}

+		for (Refactoring ref : refactorings) {

+			// getInitialConditions(ref);

+			if (namespaceURI.equals("")

+					|| namespaceURI.equals(ref.getNamespaceUri())) {

+				atomic = comrelFactory.createModelRefactoring(ref.getId());

+				atomic.setName(ref.getName());

+				atomic.setLabel(ref.getName());

+				atomic.setNamespaceUri(ref.getNamespaceUri());

+				ports = ref.getController().getDataManagementObject()

+						.getInPorts();

+				for (org.eclipse.emf.refactor.refactoring.core.Port p : ports) {

+					inputPort = comrelFactory.createSingleInputPort();

+					inputPort.setName(p.getName());

+					inputPort.setType(p.getType());

+					inputPort.setDescription(p.getDescription());

+

+					atomic.getInputPorts().add(inputPort);

+				}

+

+				atomics.put(ref.getId(), atomic);

+			}

+		}

+		return atomics.values();

+	}

+

+	/**

+	 * Liefert alle NamespaceUris, gesammelt aus den emfRefactorings

+	 * 

+	 * @return namspaceUris

+	 */

+	public static Set<String> getNamepsaceURIS() {

+		TreeSet<String> result = new TreeSet<String>();

+		for (ModelRefactoring ref : RegistryUtil.getEmfRefactoringsAsModelRefactorings()) {

+			result.add(ref.getNamespaceUri());

+		}

+		return result;

+	}

+

+}